现在有由 c++ 编写的服务器(gsoap)。我有 c# 应用程序(c# 4.0,winforms)。我从该服务生成 wsdl。所以我可以在我的应用程序中调用一些函数。
但是这个功能的持续时间超过一个小时。我认为,最好的方法是:
1)我在我的应用程序的线程中调用这个函数。
2) 另一个人在其应用程序的单独线程中调用此函数。
但是这个人告诉我这是不可能的。她说,“在 gsoap 中没有线程这样的功能”
这是真的吗?我不明白为什么这是不可能的..
1)我在我的应用程序的线程中调用这个函数。
2) 另一个人在其应用程序的单独线程中调用此函数。
如果应用程序是指 web 服务客户端应用程序,那么简短的回答是否定的,它本身不会导致 gsoap 处理多个线程上的请求。gsoap 不提供任何开箱即用的多线程功能。在客户端应用程序中启动单独的线程不会在(gsoap)服务器上启动相应的线程。
尽管可以使用多个线程来处理来自多个客户端的请求,但您的预感是正确的。但是,您需要在 gsoap 应用程序中自己创建和管理这些线程。您可能会发现此讨论很有帮助 - gSOAP Multithreading
当您有一个运行一个小时或更长时间的服务呼叫时……修改您的服务接口不是更好吗?您可以返回某种“id”(整数,或者可能是 GUID)。并有一个 call IsFinished(id)
,它返回当前状态。当 IsFinished 返回 true 时,用户可以通过GetResult(id)
调用检索结果。
这是在接口方面的更多工作,但也许它使您的服务器更易于维护。它在客户端更干净。