Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 围绕一个非';t线程安全?_C#_.net_Api_Thread Safety - Fatal编程技术网

C# 围绕一个非';t线程安全?

C# 围绕一个非';t线程安全?,c#,.net,api,thread-safety,C#,.net,Api,Thread Safety,我们的票证系统供应商提供了一个.NETAPI库,我一直在尝试从多线程应用程序中使用它。我遇到了各种各样的连接/状态问题,我相信这可能是因为它不是“线程安全的”(我仍然是C#和线程应用程序的新手,所以我现在只是猜测一些症状) API没有实例化的类,您只需从其命名空间调用静态方法TrebuchetApi.API.Connect()和TrebuchetApi.API.Login()(实际上所有方法都是静态的) 因此,我可能让一个线程做一件事,另一个线程做另一件事,而底层API正在变得混乱(应该设置的静

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

API没有实例化的类,您只需从其命名空间调用静态方法
TrebuchetApi.API.Connect()
TrebuchetApi.API.Login()
(实际上所有方法都是静态的)

因此,我可能让一个线程做一件事,另一个线程做另一件事,而底层API正在变得混乱(应该设置的静态变量为null等等)

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

更新:

为了清楚起见,在提出了使用AppDomains的建议之后,我发现这篇文章提供了我所需要的确切框架:
使用appdomains似乎是一条可行之路

参见或,了解人们提出的类似问题

msdn指南可在此处找到


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

如果dll是.net dll,您应该能够为每个副本将程序集加载到单独的AppDomain中。看到这里,我跟随了你的链接,并进一步阅读了AppDomains,然后发现了这篇文章,这篇文章完全符合我的需要: