1

当社のチケット システム ベンダーは .NET API ライブラリを提供しており、私はこれをマルチスレッド アプリケーションから利用しようとしています。私はあらゆる種類の接続/ステートフルの問題に遭遇しています.これはおそらく「スレッドセーフ」ではないためだと思います.症状が重なります)。

API にはインスタンス化されたクラスはありません。静的メソッドTrebuchetApi.Api.Connect()TrebuchetApi.Api.Login()その名前空間から呼び出すだけです (実際、すべてのメソッドは静的に見えます)。

そのため、1 つのスレッドが 1 つのことを行い、別のスレッドが別のことを行っている可能性があり、基になる API が混乱しています (設定する必要がある静的変数は null などです)。

各スレッドに API の新しい「インスタンス」を使用させる方法はありますか、それとも単に避けられないのでしょうか?

アップデート:

明確にするために、AppDomains を使用するための提案の後、必要な正確なフレームワークを提供するこの記事を見つけました 。 -c-sharp.aspx

4

1 に答える 1

2

appdomains を使用するのがよいようです。

.NET ランタイムで静的変数の共有を防ぐにはどうすればよいですか? を参照してください。または.Netでは、パブリック静的変数の「静的性」はAppDomainまたはプロセス全体に限定されていますか? 人々が持っていた同様の質問について。

msdn ガイドは、 http://msdn.microsoft.com/en-us/library/ms173138(v=vs.90).aspx にあります

AppDomain は .net の概念であり、管理されていないリソースが依然として問題になる可能性があることに注意してください。

于 2013-09-03T09:43:57.460 に答える