将Visual Studio生成的soap客户端请求限制为单线程

时间:2012-09-03 14:43:54

标签: c# multithreading soap clients

我正在使用VS2010中通过“添加服务引用”生成的客户端测试SOAP服务。

我正在并行运行测试(c.10个线程),这暴露了被测系统中的一些数据库锁定问题。但是,这不会马上修复,我不希望我的功能测试由于这个问题而失败。

结果我将测试线程减少到1,并且正如预期的那样我没有看到锁定问题,但是,这显然使我的测试套件变得非常慢。因此,我想知道是否可以使用客户端配置来限制客户端只同时发出一个请求?

1 个答案:

答案 0 :(得分:0)

它不是需要限制其调用代码的soap客户端。将执行Soap调用,其中正在创建线程。如果您遇到多线程问题,这是因为您的代码中有多个线程,或者您正在尝试进行其他服务调用或更新回调中的内容而不了解您所处的线程。

根据问题,您有许多解决方案,其中可能包括:

  1. 从应用程序中删除多线程,不要使用回调,也不要启动其他线程。

  2. 或理想情况下确保在适当的时候调度回UI,了解您所在的线程,以便修复基础锁定问题

  3. http://msdn.microsoft.com/en-us/library/ms591206.aspx

        Me.Dispatcher.BeginInvoke(Sub()
                                      ' This will be executed on the UI Thread
                                  End Sub)
    

    在您的问题中使用有问题的代码会很好(并且非常有用)。您使用的.net版本以及您的应用程序编写的内容(Asp.net,WinForms?)也有助于获得一些背景信息。

    注意:vb.net中的示例代码,但您明白了; p