解决非线程安全的外部.NET库?

时间:2013-09-03 09:29:31

标签: c# .net api thread-safety

我们的票证系统供应商提供了一个.NET API库,我一直在尝试从多线程应用程序中使用它。我遇到了各种各样的连接/有状态问题,我相信这可能是因为它不是“线程安全的”(我仍然是C#和线程应用程序的新手,所以我现在的猜测只是一些症状排队)。

API没有实例化的类,只需从它的命名空间中调用静态方法TrebuchetApi.Api.Connect()TrebuchetApi.Api.Login()(实际上所有方法看起来都是静态的)。

所以我可能有一个线程做一件事,另一个做其他事情,底层API变得混乱(应该设置的静态变量为null等)。

有没有办法让我的每个线程都使用API​​的全新'实例',或者这是不可避免的?

更新

为清楚起见,在使用AppDomains的建议后,我发现这篇文章提供了我需要的确切框架: http://www.superstarcoders.com/blogs/posts/executing-code-in-a-separate-application-domain-using-c-sharp.aspx

1 个答案:

答案 0 :(得分:2)

使用appdomains似乎是要走的路。

有关人们的类似问题,请参阅How do I prevent static variable sharing in the .NET runtime?In .Net is the 'Staticness' of a public static variable limited to an AppDomain or the whole process?

可以在http://msdn.microsoft.com/en-us/library/ms173138(v=vs.90).aspx

找到msdn指南

请记住,AppDomain是一个.net概念,非托管资源仍然是一个问题。