【发布时间】:2013-09-04 15:25:26
【问题描述】:
我们的票务系统供应商提供了一个 .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
【问题讨论】:
-
如果 dll 是 .net dll,您应该能够将程序集加载到每个副本的单独 appdomain 中。看到这个msdn.microsoft.com/en-us/library/25y1ya39.aspx
标签: c# .net api thread-safety