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

Вот такой код прекрасно работает в среде .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
ActiveX - под отладчиком работает превосходно, без него падает
    #32943415
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snookerWealthLab - это ActiveX библиотека. Я подключаю ее к проекту как ресурс. Зачем ?
...
Рейтинг: 0 / 0
ActiveX - под отладчиком работает превосходно, без него падает
    #32943704
snooker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 кузя snookerWealthLab - это ActiveX библиотека. Я подключаю ее к проекту как ресурс. Зачем ?

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

Сергей Новожилов
...
Рейтинг: 0 / 0
ActiveX - под отладчиком работает превосходно, без него падает
    #32943744
snooker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, опечатка, подключаю билитеку как reference
Сергей Новожилов
...
Рейтинг: 0 / 0
ActiveX - под отладчиком работает превосходно, без него падает
    #32944035
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выведи на консоль полный 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
ActiveX - под отладчиком работает превосходно, без него падает
    #32944935
snooker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, спасибо, так и сделал, вывел все в 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
ActiveX - под отладчиком работает превосходно, без него падает
    #32944944
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй вынести создание 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
ActiveX - под отладчиком работает превосходно, без него падает
    #32945405
snooker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кузя!

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

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

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

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

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

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


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