是否可以在gsoap中的单独线程中执行函数?

时间:2013-10-22 07:59:58

标签: c# c++ wcf soap gsoap

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

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

1)我在我的应用程序中使用线程调用此函数。

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

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

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

2 个答案:

答案 0 :(得分:1)

  

1)我在我的应用程序中使用线程调用此函数。

     

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

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

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

答案 1 :(得分:1)

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

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