Windows Service开发时调试一般可以直接调试进程,但是要求编译Debug版本的。
另外为了测试的方便可以使用VS自带的UnitTest功能,UnitTest默认是STA线程的
如果多线程需要调用MTA线程,则无法调用 WaitHandle.WaitAll(waithandlers);
报错:WaitAll for multiple handles on a STA thread is not supported.
会提示不支持STA线程的调用,那么就需要在测试工程的配置文件(.testrunconfig文件)
加上
<ExecutionThread apartmentState="MTA" />
如下:
<?xml version="1.0" encoding="UTF-8"?>
<TestRunConfiguration name="Local Test Run" id="a6018de3-504e-40ab-b4ed-cc8b4e4f2c3a" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2006">
<Description>This is a default test run configuration for a local test run.</Description>
<TestTypeSpecific />
<ExecutionThread apartmentState="MTA" />
</TestRunConfiguration>