PDA

Показать полную графическую версию : C#. Программа вылетает без интернета


Efsey
11-01-2011, 12:18
Здрасьте! Случилась такая вот беда. Написал программу, она работает, вроде даже как надо, но не запускается на компьютерах где нет интернета.
В win2003 вылетает как партизан-молча(try-catch не реагируют) win2008 пишет "Возникшая проблема привела...".
Сама программа должна обращаться только к локальной сети и только по нажатию кнопки.

Подскажите где-что убрать(добавить, настроить)?

MS Visual studio 2010

На машине где прога собиралась запускается без инета

LilLoco
11-01-2011, 19:29
Efsey, А Вы пробовали только на Win2003 и Win2008? Не могли бы предоставить более подробную информацию об ошибке!

Efsey
11-01-2011, 20:24
Программа скомпилирована в вин7, запускалась 7, 2003, 2008. На 7 (где собрана) работает без проблем с инетом и без.
На 2003 и 2008, где есть инет также работает без вылетов и ошибок.
На 2003 без инета программа мелькает в диспетчере задач, но окно не появляется, ошибок, исключений и прочего не выводит.
На 2008 также без инета выводит сообщение: "Прекращена работа приложения. Возникшая проблема привела к прекращению работы программы. Закройте эту программу".
Прога использует .net4, везде стоят последние версии и все update'ы. Разница в компах только в отсутствии инета.

LilLoco
11-01-2011, 20:41
А пробовали на тех компьютерах с вин2003 и вин2008 где есть интернет и работает программа, отключить его(интернет) и запустить?а то мб это лишь совпадение?)

Efsey
11-01-2011, 20:57
Пробовал, все равно работают.

Подключил один комп к инету, все равно вылетает...

Непонятно

LilLoco
11-01-2011, 21:20
А другие приложения, использующие .Net 4.0 запускаются на этих компьютерах?Если да, значит проблема в самом коде!Начать нужно, если Вы говорите что это форма, с событий создания формы или загрузки!Так же,если есть, код при запуске приложения!

Efsey
11-01-2011, 21:29
Весь код запускаемый при старте: справка sprvk;
Настройки nstrk;
public int ид_писателя { get; set; }
public osn()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
Environment.CurrentDirectory = @"C:\updweeketalon\";
this.стат_инфо();
}
public void стат_инфо() //выводит в листбоксы имя компа, номер комбинатора и писателя
{
try
{
имя_компа.Text = Environment.MachineName;
номер_комбинатора.Text = Convert.ToString(Settings.Default.номер_комб);
номер_пис.Text = Convert.ToString(Settings.Default.ном_пис);
колво_писателей.Text = Convert.ToString(Settings.Default.колво_писат);
}
catch { MessageBox.Show("мля"); }
}

LilLoco
11-01-2011, 22:01
Этот код находится в событии Load формы? ничего странного тут нет, вряд ли ошибка тут :( Может быть все же ошибка в самом .Net???

Попробуйте закомментировать код в load формы и запустить!Форма то должна появится, если проблема не в .Net!

Delirium
12-01-2011, 00:52
Efsey, а что такого использует программа, что ей нужен 4 фреймворк? Приведенный код будет работать даже на первом .Net.

Варианты решения проблемы: комментируем строки
Environment.CurrentDirectory = @"C:\updweeketalon\";
this.стат_инфо();

Запускаем, проверяем. Если работает, раскомментим по очереди строки и в отладчике пошагово смотрим где вылетает.

P.S. XP и 7, к примеру, по разному обрабатывают ошибки, связанные с использованием NULL переменных(это я просто как пример привел).
P.P.S писать Convert.ToString(Settings.Default.ном_пис) не обязательно, короче и быстрее будет Settings.Default.ном_пис.ToString();

Efsey
12-01-2011, 07:29
Стало запускаться после комментирования Environment.CurrentDirectory = @"C:\updweeketalon\";

Только все равно непонятно, почему на одном запускалось, а на другом нет.

P.S. папка "C:\updweeketalon\" есть на каждом компе. Большая часть действий завязана на этой папке.

Delirium
12-01-2011, 08:36
Убери последний слеш в пути к папке. Ты же указываешь директорию, а не содержимое директории




© OSzone.net 2001-2012