Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在winform和aspx页面(C)中订阅异步web服务事件_C#_Events_Asynchronous_Service - Fatal编程技术网

C# 在winform和aspx页面(C)中订阅异步web服务事件

C# 在winform和aspx页面(C)中订阅异步web服务事件,c#,events,asynchronous,service,C#,Events,Asynchronous,Service,我在winform上有一个WebBrowser控件。WebBrowser控件显示具有GridView的aspx页面 Winform上也有一个网格。winform上的grid和aspx页面上的gridview都从同一数据库中的同一个表中提取数据。这个想法是当我在windows端选择一行时,应该在aspx页面上选择它,而不需要用户按F5/刷新键。当在aspx页面上选择一行时,它将在winforms网格上被选择 我想我必须使用一个Web服务来处理一个aspx页面和winform都订阅的事件。我认为这是

我在winform上有一个WebBrowser控件。WebBrowser控件显示具有GridView的aspx页面

Winform上也有一个网格。winform上的grid和aspx页面上的gridview都从同一数据库中的同一个表中提取数据。这个想法是当我在windows端选择一行时,应该在aspx页面上选择它,而不需要用户按F5/刷新键。当在aspx页面上选择一行时,它将在winforms网格上被选择

我想我必须使用一个Web服务来处理一个aspx页面和winform都订阅的事件。我认为这是解决问题的最好办法,除非另有办法。问题是,我是一个非常新的asp和c,因此事件和Web服务也是非常不熟悉的领域

如何在webservice中编写这样的事件

我如何在aspx页面上订阅它

我如何在Winform上订阅它

请帮忙

谢谢

备选方案1:

您可以使用ajax轮询Web服务。让Web服务以一条无新消息或所需信息进行响应

查看jQuery中的ajax方法以获得简单的处理

备选案文2:


实现类似COMET的方法。谷歌asp.NETComet。基本上,您可以通过ajax创建一个长期存在的请求,在该请求发生新情况或请求即将超时之前,Web服务器不会做出响应。

要实现您试图用以保持它们同步的操作,不是要简单得多吗?当您在客户端应用程序中选择项目时,让它在webbrowser控件中触发一个javascript事件,并在那里选择它


这里对该方法的一个基本总结是,容器应用程序WinForms one能够访问WebBrowser控件的内容,以便在嵌入式页面上触发JS事件。使用相同的方法,WebBrowser控件中的JS也能够与客户端应用程序通信,因此您无需费心编写服务来启用该通信通道。

所有web服务都是同步的。i、 e.他们总是返回带有您请求的信息或错误的响应。但是,您可以异步调用它们,这有点不同。其思想是在web服务上发生某些事情时获取aspx页面的通知,而不刷新整个页面。这真的可能吗?请注意,这种方法假设您可以访问HTML来添加所需的方法,但听起来无论如何都是这样。非常感谢您。这是非常容易和完美的工作。非常感谢。嗨,僵尸羊,ajax UpdatePanel中的服务器端控件似乎没有调用所需的通信。我在aspx页面上放置了一个DropDownList,AutoPostback设置为true,我在SelectedIndexChanged事件中有这行代码。Page.ClientScript.registerstartupscript this.GetType,ClientScript,functionarg1,true;当控件位于UpdatePanel之外时,它将运行;当控件位于UpdatePanel之内时,它不会运行。有什么想法吗?谢谢,没关系。我得到了解决办法:嗨,jgauffin,谢谢你的回复。考虑到我想要构建的应用程序,您的方法比我实际需要的要多。其思想是在windows中重用asp.net中为创建的控件,而无需重写该控件的代码。实际上,我已经尝试过ajax路线,带有计时器,web服务将指示是否什么都没有发生。然而,我担心如果有许多客户机,web服务将承受不必要的负担。谢谢