powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / OPC в отдельном потоке
25 сообщений из 46, страница 1 из 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
25 сообщений из 46, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / OPC в отдельном потоке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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