Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ActiveX - под отладчиком работает превосходно, без него падает / 8 сообщений из 8, страница 1 из 1
03.03.2005, 11:20
    #32943152
snooker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
Здравствуйте, уважаемые знатоки!

Вот такой код прекрасно работает в среде .NET, однако тот же самый файл не запускается без отладчика

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using System;

public class ConsoleMM
{

	public static void Main ()
	{

	}

	private WealthLab.IWL3 wl3 = null;
	
}

WealthLab - это ActiveX библиотека. Я подключаю ее к проекту как ресурс. Однако при запуске без отладчика, из строки пуск, выдается ошибка

'System.IO.FileNotFoundException' has occured in ConsoleMM.exe

Думаю, не находит компонента Interop.WealthLab.dll, который лежит в этой же директории, а вот что делать - не понимаю....

С уважением
Сергей Новожилов
...
Рейтинг: 0 / 0
03.03.2005, 12:51
    #32943415
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
snookerWealthLab - это ActiveX библиотека. Я подключаю ее к проекту как ресурс. Зачем ?
...
Рейтинг: 0 / 0
03.03.2005, 14:10
    #32943704
snooker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
2 кузя snookerWealthLab - это ActiveX библиотека. Я подключаю ее к проекту как ресурс. Зачем ?

А какие есть варианты? Я указал её в ресурсах проекта, затем создаю переменную - экземпляр класса, описанного в библиотеке.
Запускал всё это хозяйство под средой, все работало, попробовал запустить из командной строки, как нормальное приложение - перестало вызывать методы объекта wl3.

Сергей Новожилов
...
Рейтинг: 0 / 0
03.03.2005, 14:21
    #32943744
snooker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
Пардон, опечатка, подключаю билитеку как reference
Сергей Новожилов
...
Рейтинг: 0 / 0
03.03.2005, 15:30
    #32944035
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
выведи на консоль полный stack-trace и посмотри в каком месте отваливается:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
static void Main(string[] args)
{
  try
  {
    ...
  }
  catch(Exception ex)
  { 
    Console.WriteLine(ex.ToString());
  }
}
...
Рейтинг: 0 / 0
03.03.2005, 21:06
    #32944935
snooker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
Да, спасибо, так и сделал, вывел все в try,

оказалось, что приложение WealthLab, к которому подключаюсь, должно быть запущено в момент обращения. Среда под отладчиком его автоматически загружала, а при попытке запустить без среды всё то работало, то нет..... Никак не мог понять :))



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
using System;
  

public class ConsoleMM
{
	public static void Main ()
	{

			try
			{
				wl3.ExecuteScript( "Scr", "WLName", "Sym");
				wl3.CloseWindows();
			}

			catch (System.ArgumentNullException ex)
			{ 
				
				Console.WriteLine("Exception cauht - {0}", ex);
				Console.WriteLine("Обычно возникает, когда не запущен WealthLab, надо запустить");
				Console.WriteLine("Нажмите любую клавишу");
				Console.ReadLine();
			
			}
			catch (System.NullReferenceException ex)
			{ 

				Console.WriteLine("Exception cauht - {0}", ex);
				Console.WriteLine("Обычно возникает, когда не запущен WealthLab, надо запустить");
				Console.WriteLine("Нажмите любую клавишу");
				Console.ReadLine();

			}

			catch (System.Exception ex)
			{ 

				Console.WriteLine("Exception cauht - {0}", ex);
				Console.WriteLine("Нажмите любую клавишу");
				Console.ReadLine();
			}
			finally 
			{

			}
	}


	private static WealthLab.IWL3 wl3 = (WealthLab.IWL3) new WealthLab.WL3Class();
	
}



Однако вот что не понятно.

Похоже, без try обращение к интерфейсу вообще никогда не работает. Такое может быть?

И почему ошибка выдается на фоне запущенного приложения WealthLab, в том случае, если оно не было запущено в момент вызова. Если уж оно таки запускается, так чего ошибку выдавать?

Непонятен механизм вызова исключения...

Сергей Новожилов
...
Рейтинг: 0 / 0
03.03.2005, 21:20
    #32944944
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
попробуй вынести создание WealthLab.IWL3 из конструктора в метод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private static WealthLab.IWL3 wl3;

public static void Main ()
{
  ...
  wl3 = (WealthLab.IWL3) new WealthLab.WL3Class();
  ...
}
...
Рейтинг: 0 / 0
04.03.2005, 09:52
    #32945405
snooker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ActiveX - под отладчиком работает превосходно, без него падает
Кузя!

Вынести в метод не помогает, однако НОЧЬ не прошла даром :-))

Оказывается, конструктор класса WealthLab.WL3Class() создает отдельный поток, и пока этот Thread создается, надо просто поставить своему потоку Thread.Sleep и потерпеть 100 миллисекунд.

Код: plaintext
1.
2.
	while (wl3.WLSymbols(WLName) == null)
		Thread.Sleep(100);

Т.е. терпение, еще раз терпение.

Спасибо за помощь, try еще раз перечитаю, полезная штука.

Сергей Новожилов
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ActiveX - под отладчиком работает превосходно, без него падает / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]