1

我们的票务系统供应商提供了一个 .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

4

1 回答 1

2

Using appdomains seems like the way to go.

See How do I prevent static variable sharing in the .NET runtime? or In .Net is the 'Staticness' of a public static variable limited to an AppDomain or the whole process? for similar questions people had.

The msdn guide can be found here http://msdn.microsoft.com/en-us/library/ms173138(v=vs.90).aspx

Just keep in mind that AppDomain is a .net concept, unmanaged resources can still be an issue.

于 2013-09-03T09:43:57.460 回答