| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > C# vs VB.Net |
| Автор: hyp1k 20.11.2012, 14:42 | ||||
| Написал класс на vb.net, выгрузил его в dll. Попытки пользовать эту длл в проекте vb.net успешны, в C# не работает. Как такое может быть? Ведь, насколько мне известно, код переводится в промежуточный язык когда заносится в dll?! код первого работает
Второй не работает
ПОЧЕМУ? |
| Автор: lomaster 20.11.2012, 14:51 |
| что значит не работает? |
| Автор: hyp1k 20.11.2012, 15:10 | ||
| В vb.net проходит подключение и устанавливается значение, по нужному пути, при том отрабатывает быстро и четко. В C# программа подвисает, видимо не подключившись во второй строке, на 3 строке показывает ошибку, System.Runtime.InteropServices.COMException {"No Current Connection"}. Если развернуть информацию об исключении в студии в поле Source значение Serck.ScxV6Server. Т.е. я понимаю, да внутри моей библиотеки не прошло подключение, а член класса сервер в состоянии No Current Connection. Но это не важно, допустим я не знаю, что внутри библиотеки и как оно там работает, черный ящик. Должно работать везде. Т.е. возможно, что отличается механизм передачи параметров из программ в функцию, это мой бред, не знаю о чем думать.. Добавлено через 2 минуты и 30 секунд Класс, выгруженный в dll
|
| Автор: diadiavova 20.11.2012, 15:18 |
| hyp1k, может дата неправильно парсится? Ты ведь поразному её парсишь? Метод парс по умолчанию ( если не ошибаюсь) использует американскую систему, то есть сначала пишется месяц, потом день, потом год. А при использовании конвертера вполне возможно, что используется культура системы. |
| Автор: lomaster 20.11.2012, 15:26 |
| Нет, дело не в передаче параметров. Скорее всего в параметрах данные идут не те. Проверяйте все ли одинаково отправляете. Ну и под дебагом смотрите что куда идет и где "зависает". |
| Автор: hyp1k 20.11.2012, 15:46 |
| lomaster, Такая проблема не только у меня, человек пользуется библиотекой и говорит, что в шарпе не работает, а в вб работает. Первое предлрожение из его поста. Ошибка у него точно такая же. http://scadaforum.controlmicrosystems.com/forum/messageview.cfm?catid=51&threadid=2067&highlight_key=y&keyword1=Connection передаю одинаково параметры :( diadiavova, CDate("20.11.2012 09:23:20").Ticks 634890002000000000 Long DateTime.Parse("20.11.2012 09:23:20").Ticks 634890002000000000 long вопрос больше к разработчикам, но работать должно без вопросов... |
| Автор: hyp1k 20.11.2012, 16:20 |
| Вот когда я наткнулся на то, что библиотека произодителя в шарпе не работает, а в vb работает, я думал напишу обертку в vb, выгружу в длл и буду использовать в шарпе, оказалось все равно не пашет.. |
| Автор: lomaster 20.11.2012, 17:44 |
| Что значит обертку и почему не сработало? |
| Автор: hyp1k 20.11.2012, 22:19 |
| Спасибо за комментарии. Сегодня под конец рабочего открыл IL коды обоих экзешников, они почти идентичны, впал еще в больший ступор. Завтра продолжу... |
| Автор: lomaster 20.11.2012, 22:49 |
| Неужели нельзя проверить установлен конект или нет? Обламывается у вас по всей видимости именно в Svr.Connect(ConnectionId, Name, Password). римерно как у этих товарищей - http://scadaforum.controlmicrosystems.com/forum/messageview.cfm?catid=51&threadid=1240 |
| Автор: hyp1k 21.11.2012, 09:25 | ||
| lomaster, хорошая ссылка, вчера не нашел ее сам. Открыл их демо проект увидел атрибут [STAThread]. А как раз вчера под вечер смотрел IL коды, они тож отличались на строчку .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) и действительно рабочий код выглядит вот так:
Почему vb.net этот атрибут вставляется по умолчанию?! Осталось почитать и разобраться как влияет [STAThread] на подключение COM объектов. Спасибо за помощь! |
| Автор: lomaster 21.11.2012, 09:45 | ||
|