Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# WebService上下文中的后台工作线程_C#_Web Services_Backgroundworker - Fatal编程技术网

C# WebService上下文中的后台工作线程

C# WebService上下文中的后台工作线程,c#,web-services,backgroundworker,C#,Web Services,Backgroundworker,好的,我在一个webservice中调用了Call1,它将启动一个bacground工作线程来开始进行一些处理,但是我想调用另一个调用(Call2),它将通过引用来监视原始工作线程 有什么建议吗?我真的很想远离WinService来进行处理。因为我需要它更加实时。我不明白为什么使用服务应用程序会有问题。服务一直在运行,可以实时监控它们 但是,如果你真的不想走那条路,那么还有其他选择。可以使用线程池或手动启动新线程来启动新线程,该线程将在运行web服务的应用程序池的后台运行 您可能需要为此使用任务

好的,我在一个webservice中调用了Call1,它将启动一个bacground工作线程来开始进行一些处理,但是我想调用另一个调用(Call2),它将通过引用来监视原始工作线程


有什么建议吗?我真的很想远离WinService来进行处理。因为我需要它更加实时。

我不明白为什么使用服务应用程序会有问题。服务一直在运行,可以实时监控它们

但是,如果你真的不想走那条路,那么还有其他选择。可以使用线程池或手动启动新线程来启动新线程,该线程将在运行web服务的应用程序池的后台运行

您可能需要为此使用任务计划程序库。看看这个


请注意,如果IIS认为有必要,运行web服务的应用程序域可能随时被终止,因此无法保证作业将完成。使用服务应用程序将修复此问题

我不确定我是否理解你所说的调用2“监视”线程是什么意思。你的意思是让Call2查看与线程正在执行的任务相关的一些进度状态并向调用者报告吗?Yep这正是我需要的。我想我在这里找到了答案。。。这将起作用,但没有一个好的机制来检查Call2中的线程。我没有考虑应用程序域问题。你说得对,这根本不是拯救。。。将直接事件发送到windows服务而不是依靠计时器检查DB以获取新作业有多容易?如果您使用的是.NET 3.5,则可以使用WCF在服务应用程序中直接承载web服务。这样,您就可以公开直接与服务交互的方法。如果这不是一个选项,那么您可以使用远程处理从web服务与您的服务应用程序通信。这不是很难,但比WCF方法更笨拙。