0

现在有由 c++ 编写的服务器(gsoap)。我有 c# 应用程序(c# 4.0,winforms)。我从该服务生成 wsdl。所以我可以在我的应用程序中调用一些函数。

但是这个功能的持续时间超过一个小时。我认为,最好的方法是:

1)我在我的应用程序的线程中调用这个函数。

2) 另一个人在其应用程序的单独线程中调用此函数。

但是这个人告诉我这是不可能的。她说,“在 gsoap 中没有线程这样的功能”

这是真的吗?我不明白为什么这是不可能的..

4

2 回答 2

1

1)我在我的应用程序的线程中调用这个函数。

2) 另一个人在其应用程序的单独线程中调用此函数。

如果应用程序是指 web 服务客户端应用程序,那么简短的回答是否定的,它本身不会导致 gsoap 处理多个线程上的请求。gsoap 不提供任何开箱即用的多线程功能。在客户端应用程序中启动单独的线程不会在(gsoap)服务器上启动相应的线程。

尽管可以使用多个线程来处理来自多个客户端的请求,但您的预感是正确的。但是,您需要在 gsoap 应用程序中自己创建和管理这些线程。您可能会发现此讨论很有帮助 - gSOAP Multithreading

于 2013-10-22T08:12:55.243 回答
1

当您有一个运行一个小时或更长时间的服务呼叫时……修改您的服务接口不是更好吗?您可以返回某种“id”(整数,或者可能是 GUID)。并有一个 call IsFinished(id),它返回当前状态。当 IsFinished 返回 true 时,用户可以通过GetResult(id)调用检索结果。

这是在接口方面的更多工作,但也许它使您的服务器更易于维护。它在客户端更干净。

于 2013-10-22T08:55:32.233 回答