Как использовать службу Windows в единственном приложении c # Windows? [Дубликат]

Да по какой-то причине WebView.reload () вызывает сбой, если раньше он не загружался (что-то связано с тем, как он обрабатывает историю). Это код, который я использую для обновления моего веб-представления. Я сохраняю текущий url в self.url

  # 1: пауза и загрузка страницы self.timeout.pause () sleep (1) # 2: проверьте  интернет-соединение (действительно ленивый способ), а self.page (). networkAccessManager (). networkAccessible () == QNetworkAccessManager.NotAccessible: sleep (2) # 3: Повторите попытку, если self.url == self.page (). mainFrame (  ) .url (): self.page (). action (QWebPage.Reload) self.timeout.resume (60) else: self.page (). action (QWebPage.Stop) self.page (). mainFrame ().  load (self.url) self.timeout.resume (30) return False  
6
задан O.O 18 June 2012 в 20:32
поделиться

5 ответов

Вы должны взглянуть на Remoting

8
ответ дан Demodave 16 August 2018 в 12:07
поделиться
  • 1
    Remoting не является хорошим выбором, если на .NET 3.0+. Я предпочитаю ответ Алана. – Mark Seemann 30 December 2009 в 09:50

В вашем коде вы фактически не вызываете службу, вместо этого вы ссылаетесь на исполняемый файл и вызывают метод из этой сборки (во время выполнения .NET Framework будет использовать локальную сборку для выполнения кода, а не для вашего запуска service).

Чтобы сделать то, что вы хотите, у вас есть несколько вариантов.

В .NET 2.0 вы использовали бы .NET Remoting. Вы создаете удаленный интерфейс, который другие сборки могут использовать для вызова методов в исполняемых файлах.

В .NET 3.0 удаленный доступ был заменен WCF. Ваш сервис станет сервисом WCF, который предоставит GetRandomNumber () как часть контракта с данными. Приложения могут использовать контракт и подключаться к вашей службе для вызова метода.

В Интернете есть ряд хороших обучающих программ для .NET Remoting или его замены, Windows Communication Foundation.

15
ответ дан Alan 16 August 2018 в 12:07
поделиться
  • 1
    +1 WCF будет правильным выбором в этом случае, если на .NET 3.0+. Для полноты я хотел бы добавить, что хотя WCF заменяет Remoting почти во всех случаях, у него все еще есть ниша для межсайтовой связи AppDomain - я бы не использовал WCF для связи по границам AppDomain, но во всех остальных случаях WCF правильный выбор. – Mark Seemann 30 December 2009 в 09:49

Вы можете использовать Windows Communication Foundation и IPC ( inter-process communication ) для связи с вашей службой и выполнения вашего метода.

1
ответ дан Andy West 16 August 2018 в 12:07
поделиться

WCF будет переполнен для общения на одном компьютере. Трубы являются более простым и эффективным решением.

2
ответ дан Giorgi 16 August 2018 в 12:07
поделиться

Общение с запущенной службой ничем не отличается от методов вызова в любом другом запущенном процессе. Это означает, что вам нужно будет выкопать свои стандартные инструменты для обработки процесса.

Windows Communication Foundation (WCF) будет моим выбором по умолчанию. Вы можете разместить службу WCF в своей службе Windows и выставить ее через конечную точку Named Pipe для эффективной связи.

2
ответ дан Mark Seemann 16 August 2018 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: