Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работает - не работает, На некоторых компах программа работает 
V
    Опции темы
Victorman
Дата 31.5.2007, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.1.2007
Где: Хабаровск

Репутация: нет
Всего: нет



В общем у меня всё работает нормально.
Система: Windows XP Pro SP2
Visual Studio: 2005 Pro
Стоят Framework'и: 1.1, 2.0, 3.0.

Дал протестировть свою прогу друзьям. На 50 % машин прога не запускается! И так же не компилируется. Винда у всех XP SP2, Вижак одинаковый, Framework'и на месте.
Выдает такую ошибку (либо предлагает отправить отчёт):

Код

An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll

Additional information: Category does not exist.


В строке:

Код

((System.ComponentModel.ISupportInitialize)(this.performanceCounter1)).EndInit();


В файле:

Код

Form1.Designer.cs


performanceCounter1 отвечает за показания загрузки ЦП.
Программа написана для курсового и в принципе может быть сдана в таком виде, но также предполагается её распространение в Интернет, что исключено в таком глючном варианте.
Как вариант, хочу попробывать поставить Service Pack 1 для Visual Studio 2005, может ошибка уйдёт. Дал задание скачать другу с анлимом, жду.
PM MAIL   Вверх
Exception
Дата 31.5.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Не уверен, что это оно, но похоже.
Придётся использовать .NET 2.0, так как в нём эта проблема решена.
PM   Вверх
Victorman
Дата 2.6.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.1.2007
Где: Хабаровск

Репутация: нет
Всего: нет



Из этой статьи понял, что нужен какой-то HotFix. Что бы его получить, нужно связаться со службой поддержки, но этот вариант отпадает за отсутствием лицензионной ОС.
Ещё скачал Service Pack 1 для .NET Framework 1.1 - не помогло.
Есть гипотеза, которая нуждается в проверке. Нужен файл system.dll (лежит где-то в папке WINDOWS) версии, отличающейся от 1.1.4322.573 (именно 1.1, есть такой же 2.0). 
Кто-нибудь выложите, пожалуйста.
PM MAIL   Вверх
Exception
Дата 2.6.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Дык вряд ли у кого-то есть этот хотфикс, коли его нужно у саппорта выпрашивать. Чем не годится писать под 2.0?
PM   Вверх
Victorman
Дата 3.6.2007, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.1.2007
Где: Хабаровск

Репутация: нет
Всего: нет



Да мне не хотфикс нужен, а файл system.dll.
И что значит 
Цитата(Exception @  2.6.2007,  16:46 Найти цитируемый пост)
писать под 2.0

Я думал все объекты (например PerformanceCounter) в VS2005 и так версии 2.0. Когда в Тулбоксе на них мышку наводишь - вылазит тултип NET 2.0.0.0
PM MAIL   Вверх
Victorman
Дата 7.6.2007, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.1.2007
Где: Хабаровск

Репутация: нет
Всего: нет



Победил проблему: вместо WindowsForms.PerformanceCounter использовал System.Diagnostics.PerformanceCounter.
Однако другой комп выдаёт такую ошибку:
Код

System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
   в coretest.Form1.GetInfo()
   в coretest.Form1.Form1_Load(Object sender, EventArgs e)
   в System.Windows.Forms.Form.OnLoad(EventArgs e)
   в System.Windows.Forms.Form.OnCreateControl()
   в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   в System.Windows.Forms.Control.CreateControl()
   в System.Windows.Forms.Control.WmShowWindow(Message& m)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   в System.Windows.Forms.ContainerControl.WndProc(Message& m)
   в System.Windows.Forms.Form.WmShowWindow(Message& m)
   в System.Windows.Forms.Form.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Грешу на то, что на том компе стоят последние исправления WindowsUpdate. Что делать не знаю. И вообще о Visual C# у меня сложилось негативное впечатление: написал программу, а она глючит! На C++Builder такого нет.
PM MAIL   Вверх
Exception
Дата 7.6.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(Victorman @  7.6.2007,  05:28 Найти цитируемый пост)
И вообще о Visual C# у меня сложилось негативное впечатление: написал программу, а она глючит! На C++Builder такого нет. 


Так может это всё-таки ты виноват, а не C#? А то б уже толпы недовольных программистов штурмовали офисы Microsoft smile .

Если вглядишься в stack trace, заметишь, что ошибка выскакивает в твоём коде, так что проверь его smile .
PM   Вверх
Victorman
Дата 8.6.2007, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.1.2007
Где: Хабаровск

Репутация: нет
Всего: нет



Почему я виноват? Ведь на одном компе прога работает, а на другом - нет, не просто не запускается, а даже не компилится. Я же об этом писал.
И как я могу исправить ошибку, если на моём компьютере её нет.  smile 

Можно поподробнее про stack trace.
PM MAIL   Вверх
Naum
Дата 8.6.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(Victorman @  8.6.2007,  05:48 Найти цитируемый пост)

Можно поподробнее про stack trace.

Цитата(Victorman @  7.6.2007,  05:28 Найти цитируемый пост)
System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
   в coretest.Form1.GetInfo()
   в coretest.Form1.Form1_Load(Object sender, EventArgs e)
   в System.Windows.Forms.Form.OnLoad(EventArgs e)
   в System.Windows.Forms.Form.OnCreateControl()
   в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   в System.Windows.Forms.Control.CreateControl()
   в System.Windows.Forms.Control.WmShowWindow(Message& m)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   в System.Windows.Forms.ContainerControl.WndProc(Message& m)
   в System.Windows.Forms.Form.WmShowWindow(Message& m)
   в System.Windows.Forms.Form.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Это и есть stack trace. Из него видно, что ошибка выскакивает в методе coretest.Form1.GetInfo(). Можно посмотреть на этот метод?;)



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Victorman
Дата 9.6.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.1.2007
Где: Хабаровск

Репутация: нет
Всего: нет



Вообщем, с проблемой справился сам... ну или почти сам. Помог парнишка, на компе у которого прога не работала.
Действительно исключение возникало в функции GetInfo(), в том месте, где я из класса PropertyData брал информацию о напряжении процессора (видимо, на том компе там NULL или чё-то ещё). Переписал через try-catch.

Обнаружилась ещё ошибка - опять в PerformanceCounter'е из System.Diagnostics: показывал всегда 0-вую загрузку проца (на том компе, у меня-то всё в поряде smile). Найдена причина: ключ "Disable Performance Counters" в ветке реестра "HKLM\SYSTEM\CurrentControlSet\Services\PerfOS\Performance" стоял в значении 1 (у меня такого вообще нет). Решение: при каждом запуске моя прога удаляет этот ключ, если он есть.
Код

RegistryKey key = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\PerfOS\\Performance", true);
            key.DeleteValue("Disable Performance Counters", false);


Exception и Naum, спасибо за помощь!
Щас дам протестить последнему человечику. И если глюков наблюдаться не будет, закрою тему.

Это сообщение отредактировал(а) Victorman - 9.6.2007, 09:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.