同じライブラリのさまざまなクラスで使用されるthreadstatic変数を使用するライブラリを作成しました。スレッド用に初期化されると、これらすべてのクラスが連携して、これらの変数を使用してタスクを実行します。
ここで、ASP.NETアプリケーションでこれと同じライブラリを使用する必要があります。threadstaticでは変数が単一のスレッドに対してグローバルになることはありませんが、これらはスレッド間で共有されることがわかりました。
良いアプローチに聞こえないので、関数に変数を渡すことは避けています。したがって、ライブラリを両方のタイプのアプリケーション(winforms + webforms)で使用できるようにするためのソリューション、つまり、threadstaticとsessionの代替が必要です。
図書館の辞書を使って自分の管理を実装してみませんか?誰が私(ライブラリ)、つまりデスクトップアプリケーションまたはasp.netを呼び出したのかを知り、その後、スレッドIDまたはセッションIDをそれぞれ使用して、辞書から変数を取得します。今のところ、それが可能かどうかはわかりません。
また、ASP.NETによるスレッド共有によってthreadstaticが誤動作するのを防ぐために、IISではなくexeによってホストされるこのライブラリ用にWebサービスが作成された場合はどうなりますか?
解決策を提案してください。