我正在使用通过“添加服务参考”在 VS2010 中生成的客户端测试 SOAP 服务。
我正在并行运行测试(c. 10 个线程),这暴露了被测系统中的一些数据库锁定问题。但是,这不会立即解决,我不希望我的功能测试因为这个问题而失败。
结果,我将测试线程数减少到 1,并且正如预期的那样,我没有看到锁定问题,但是,这显然使我的测试套件变慢了很多。因此我想知道是否可以使用客户端配置来限制客户端只能同时发出一个请求?
我正在使用通过“添加服务参考”在 VS2010 中生成的客户端测试 SOAP 服务。
我正在并行运行测试(c. 10 个线程),这暴露了被测系统中的一些数据库锁定问题。但是,这不会立即解决,我不希望我的功能测试因为这个问题而失败。
结果,我将测试线程数减少到 1,并且正如预期的那样,我没有看到锁定问题,但是,这显然使我的测试套件变慢了很多。因此我想知道是否可以使用客户端配置来限制客户端只能同时发出一个请求?
它不是需要限制其调用代码的soap客户端。Soap 调用将在其发出的任何线程中执行。如果您有多个线程的问题,这是因为您的代码中有多个线程,或者您正在尝试进行额外的服务调用或更新回调中的某些内容而不了解您所在的线程。
根据问题,您有许多解决方案,其中可能包括:
从您的应用程序中删除多线程,不要使用回调并且不要启动额外的线程。
或者理想情况下,确保在适当的时候分派回 UI,了解您所在的线程,以便修复潜在的锁定问题
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