powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / OPC в отдельном потоке
46 сообщений из 46, показаны все 2 страниц
OPC в отдельном потоке
    #39709192
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выполняю такой код в WinForm-приложении:
Код: c#
1.
2.
3.
Opc.Da.Server server = new Opc.Da.Server(new OpcCom.Factory(), new Opc.URL("opcda://Serck.ScxV6OPCDA.Alias.10.20.30.40"));
Opc.ConnectData cd = new Opc.ConnectData(new System.Net.NetworkCredential("login", "password"));
server.Connect(cd);

Все хорошо!

Запускаю этот же код в отдельном потоке - подключения не получается.
Чем можно помочь этому коду?
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709203
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения! Видимо поток не при делах.
Есть клиентская WinForm-программа, которая вызывает некоторый метод, некоторого WCF-контракта.
Этот метод создает отдельный поток, в котором находится подобный код (который в этом месте не работает).
Я сейчас перенес этот код из отдельного потока в сам WCF-метод. Здесь этот код тоже не работает. (error в attach)
А если поместить этот код в самом клиенте, то все замечательно.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709207
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ЧитательXЧем можно помочь этому коду?
Не завершать этот поток сразу после подключения
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709212
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поток, в моем случае не завершался.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709217
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточняю: Ошибка появляется на вызове метода server.Connect() (спустя некоторое время пока Connect "думает")
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709219
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательX,
у вас сумбурно описано.
Смешались потоки, wcf, OPC
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709221
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXПрошу прощения! Видимо поток не при делах.
Есть клиентская WinForm-программа, которая вызывает некоторый метод, некоторого WCF-контракта.
Этот метод создает отдельный поток, в котором находится подобный код (который в этом месте не работает).
Я сейчас перенес этот код из отдельного потока в сам WCF-метод. Здесь этот код тоже не работает. (error в attach)
А если поместить этот код в самом клиенте, то все замечательно.


Пробовали кликать по ссылке View Detail?
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709225
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXУточняю: Ошибка появляется на вызове метода server.Connect() (спустя некоторое время пока Connect "думает")
поток зачем?
Если для разморозки ГУИ, то по современному - await
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709226
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сумбурно это точно. Но пришлось на ходу менять описание ситуации, так как выяснилось, что и без потока проблема есть.
Итак проблема:
Подключение из клиентской программы работает.
Клиентская программа вызывает WCF-метод, в котором это же подключение не работает.

Ссылка View Detail ничего дополнительного не сообщает.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709229
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123поток зачем?
Если для разморозки ГУИ, то по современному - await Можно и await. Это сейчас не самое главное
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709231
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXКлиентская программа вызывает WCF-метод, в котором это же подключение не работает.
покажи оба вызова - рабочий и не рабочий
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709233
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательX,
с клиента вызвать wcf метод - это значит код исполняется на wcf сервере.
Совсем другие помидоры.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709234
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
Opc.Da.Server server = new Opc.Da.Server(new OpcCom.Factory(), new Opc.URL("opcda://Serck.ScxV6OPCDA.Alias.10.20.30.40"));
Opc.ConnectData cd = new Opc.ConnectData(new System.Net.NetworkCredential("login", "password"));
server.Connect(cd);

Этот код вставляю под кнопку в клиентской WinForm-программе.
Точно этот же код вставляю в WCF-методе, который вызывается этой же программой.
В первом случае подключение проходит, во втором случае нет.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709236
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательX,

смотрите в отладке, пишите логи
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709237
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXWCF-методев третий раз - код давай
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709238
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123с клиента вызвать wcf метод - это значит код исполняется на wcf сервере.
Совсем другие помидоры. Хотелось бы понять чем отличаются эти "помидоры".
В URL используются настройки связанные с провайдером
Код: c#
1.
"opcda://Serck.ScxV6OPCDA.Alias.10.20.30.40"

Но, я пока работаю в среде VisualStudio и провайдер и алиас на моей машине присутствует как для клиента, так и для WCF-сервиса.
То что нужно для подключения, это заложено в явных атрибутах login/password.
Чего не достает WCF-методу.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709240
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXPetro123с клиента вызвать wcf метод - это значит код исполняется на wcf сервере.
Совсем другие помидоры. Хотелось бы понять чем отличаются эти "помидоры".
В URL используются настройки связанные с провайдером
Код: c#
1.
"opcda://Serck.ScxV6OPCDA.Alias.10.20.30.40"


Но, я пока работаю в среде VisualStudio и провайдер и алиас на моей машине присутствует как для клиента, так и для WCF-сервиса.
То что нужно для подключения, это заложено в явных атрибутах login/password.
Чего не достает WCF-методу.
Отладка тебе поможет
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709246
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXХотелось бы понять чем отличаются эти "помидоры".
ты код дашь или будем описывать все случаи жизни?
Первый случай - ловишь исключение на клиенте, а на сервере оно другое.
Нафига гадать?
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709248
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательX,

DCOM настройки
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709249
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательX,
ну и код в WCF сервере просто пишут другой. Не такой как на клиенте.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709253
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Весь солюшен вывалить не могу. Но, вот основные "тезисы":
Код: c#
1.
2.
3.
4.
5.
6.
private void Button_1_Click(object sender, EventArgs e)
{
  Opc.Da.Server server = new Opc.Da.Server(new OpcCom.Factory(), new Opc.URL("opcda://Serck.ScxV6OPCDA.Alias.10.20.30.40"));
  Opc.ConnectData cd = new Opc.ConnectData(new System.Net.NetworkCredential("login", "password"));
  server.Connect(cd);
}




Вот вариант с сервисом:
Код: c#
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.
IDispOpcWcfContract srv = null;

private void Button_2_Click(object sender, EventArgs e)
{
  MyCallbackClass call_back = new MyCallbackClass();
  InstanceContext call_context = new InstanceContext(call_back);

  DuplexChannelFactory<IDispOpcWcfContract> factory = new DuplexChannelFactory<IDispOpcWcfContract>(call_context, "NetTcpBinding_IMyContract");
  srv = factory.CreateChannel();
  srv.Connect();

  srv.CmdAsync();
}

[ServiceContract(CallbackContract = typeof(IMyCallbackContract))]
public interface IMyContract
{
  [OperationContract]
  void Cmd();
  ...
}

public void Cmd()
{
  Opc.Da.Server server = new Opc.Da.Server(new OpcCom.Factory(), new Opc.URL("opcda://Serck.ScxV6OPCDA.Alias.10.20.30.40"));
  Opc.ConnectData cd = new Opc.ConnectData(new System.Net.NetworkCredential("login", "password"));
  server.Connect(cd);
}
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709259
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123ну и код в WCF сервере просто пишут другой. Не такой как на клиенте. А вот с этого места прошу по подробнее!
skyANAОтладка тебе поможет Эти com-объекты ничего о себе отладчику не показывают. Единственное сообщение - это "CoCreateInstanceEx: Ошибка при выполнении приложения-сервера". Как хочешь так и понимай.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709260
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательX
Код: c#
1.
MyCallbackClass 


В WCF 4.5 это устарело, поэтому сам разбирайся.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709264
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123MyCallbackClass - В WCF 4.5 это устарелоМожет и устарело, но ведь не запрещено. К тому же это часть callback-механизма, который может работать дальше если его использовать в коде. Но, в данном случае все это отброшено и все внимание сведено к трем строчкам кода которые вызываются при вход в метод.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709270
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXМожет и устарело, но ведь не запрещено.
странный ты.
Зачем писать 25 строк, если в 4.5 будет одна строка?
Удачи!
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709276
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Зачем писать 25 строк, если в 4.5 будет одна строка?Да черт с ними с этими самыми современными методами писанины.
Конечно посмотрю как "сегодня" "по современному" нужно программировать.
Меня-то интересует другой вопрос: почему OPC-подключение в этой среде перестает работать! А мне-то это нужно!
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709282
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXДа черт с ними с этими самыми современными методами писанины.ну дык завтра приходи. Раз одну строку лень написать сегодня.
Тем более мы оффтопим, т.к. WCF в другой ветке.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709306
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXPetro123ну и код в WCF сервере просто пишут другой. Не такой как на клиенте. А вот с этого места прошу по подробнее!
skyANAОтладка тебе поможет Эти com-объекты ничего о себе отладчику не показывают. Единственное сообщение - это "CoCreateInstanceEx: Ошибка при выполнении приложения-сервера". Как хочешь так и понимай.

попо дробнее!
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709324
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kпопо дробнее!мне вопрос?
Ты же профи!
- например, исключение проглатывается и не передаётся на клиента если его не обернуть типом для сериализации.
Достаточно? ))
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709604
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Ты же профи!
- например, исключение проглатывается и не передаётся на клиента если его не обернуть типом для сериализации.
Достаточно? )) Был бы я профи, то эту проблему решил бы сам.
А насчет исключения, так зачем его передавать на сторону клиента, когда Visual Studio его прекрасно показывает на стороне сервиса (в точке server.Connect()).
Только толку от этого мало - это сообщение абсолютно не информативно.
"Ошибка при выполнении приложения-сервера" - что с этим делать? Ну передам его на сторону клиента - радости от этого не добавится.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39709707
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXБыл бы я профи, то эту проблему решил бы сам.это я ему говорил. И контекст был когда ты код упрямо не показывал.

ЧитательXА насчет исключения, так зачем его передавать на сторону клиента, когда Visual Studio его прекрасно показывает на стороне сервиса (в точке server.Connect()).да

ЧитательXТолько толку от этого мало - это сообщение абсолютно не информативно.если у тебя код сервера, то почему у тебя там buttons_click? На сервере нет ГУИ.
Сделай hello world wcf 4.5 за пол часа и разберем ошибку.
Лень?
IMHO
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710713
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прилагаю максимально "обезжиренный" солюшен, где есть тупой клиент и не менее тупой wcf-сервис.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710718
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S.
Petro123у вас сумбурно описано.
Смешались потоки, wcf, OPC
Если пытаться подключиться к OPC не в WCF, а в просто в отдельном потоке, то результат тот же (т.е. все хреново)
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710759
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXПрилагаю максимально "обезжиренный" солюшен, где есть тупой клиент и не менее тупой wcf-сервис.

http://www.sql.ru/forum/actualfile.aspx?id=21690685] Приложенный файл (TestPrj.rar - 67Kb)
Теперь Петро тебе точно поможет, подожди немного.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710850
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запуск в отдельном потоке или в WCF, по умолчанию, происходит в MTA-Apartment.
Есть подозрение, что библиотека OpcNetApi не желает работать в MTA.
А как переключить сервис или поток в STA я не знаю.
То, что предлагается в разной документации не работает:
Код: c#
1.
2.
3.
[SeviceBehavior(ConcurrencyMode=ConcurrencyMode.Single)]
public class Service1:IService1
...

или для потока:
Код: c#
1.
Thread.CurrentThread.SetAppartmentState(ApartmentState.STA);
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710866
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет. Похоже MTA здесь не виноват. В клиенте создаю простенький поток (по умолчанию получается MTA) - все работает.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710875
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧитательXПрилагаю максимально "обезжиренный" солюшен, где есть тупой клиент и не менее тупой wcf-сервис.

http://www.sql.ru/forum/actualfile.aspx?id=21690685] Приложенный файл (TestPrj.rar - 67Kb)
Теперь Петро тебе точно поможет, подожди немного.
ты за мной лет 10 тенью ходить будешь милый)). Продолжай.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710878
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXЕсли пытаться подключиться к OPC не в WCF, а в просто в отдельном потоке, то результат тот же (т.е. все хреново)
в новом WCF не нужны потоки. Так что разберись таки что тебе нужно из:
WCF+OPC+3 строчки кода.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710883
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123в новом WCF не нужны потоки. Так что разберись таки что тебе нужно из:
WCF+OPC+3 строчки кода.Я думаю, что все что нужно я тебе показал - прислал минимальный проект, который должен заработать.
Не хочешь помочь, так не мути воду.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39710912
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXЯ думаю, что все что нужно я тебе показал - прислал минимальный проект, который должен заработать.
Всё что нужно тебе или всё что я просил?
Версия 4.5. Компилируется? Минимальная?
Тогда позже посмотрю.
Не будем делать вид, что просьба минимальной демки в ветке программистов это моветон.
ЧитательXНе хочешь помочь, так не мути воду.
без комментов...
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39711010
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANAпропущено...

Теперь Петро тебе точно поможет, подожди немного.
ты за мной лет 10 тенью ходить будешь милый)). Продолжай.Почему тенью? Я открыто жду, когда ты, дорогуша, поможешь ТСу решить его проблему.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39711013
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXЯ думаю, что все что нужно я тебе показал - прислал минимальный проект, который должен заработать.
Не хочешь помочь, так не мути воду.Но походу опять не дождусь...
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39711017
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ открыто жду, когда ты,
skyANA,
дорогой Сашенька! Вы мне много внимания уделяете.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39712264
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНо походу опять не дождусь...
Сто пудов...
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39716070
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Вычищаем топик без резолюции красным причины - теряем лицо.
Вычищаем топик за двоих и баня при этом одного - теряем лицо.
....
Оставляем при этом странный вопрос про какие то ожидания в конце топика?
Вдвойне странно, т.к. вопрос топика давно решён автором переходом на новую версию WCF.
Старую версию тут знает только один мембер на всю ветку. Если он промолчал, значит у автора только один путь - переписать на новую)).
Ваш капитан очевидность.
...
Рейтинг: 0 / 0
OPC в отдельном потоке
    #39716076
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Shocker.Pro,
Вычищаем топик без резолюции красным причины - теряем лицо.
Вычищаем топик за двоих и баня при этом одного - теряем лицо.
За обсуждение действий модератора не в ОНС могут повторно в баню отправить.
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / OPC в отдельном потоке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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