ASP.NET MVCでは、アプリケーションの起動時に、バックグラウンドでいくつかの接続(LDAP、…)を行う必要があります。ASP.NET MVCアプリケーションでこの「スレッドセーフ」を実行する方法はありますか?
ありがとう、
ASP.NET MVCでは、アプリケーションの起動時に、バックグラウンドでいくつかの接続(LDAP、…)を行う必要があります。ASP.NET MVCアプリケーションでこの「スレッドセーフ」を実行する方法はありますか?
ありがとう、
AS.NETでバックグラウンドタスクを実行することは避けてください。ただし、何らかの理由でそれを実行する必要がある場合は、で新しいスレッドを開始して、Application_Start
それらのタスクを実行できます。実行は1回だけなのでApplication_Start
、このスレッドは1回実行されます(もちろん、タイマーを構成する場合を除きます->おそらく実行すべきではありません)。
一方、ASP.NET MVCコントローラー(HTTP要求のコンテキスト内で実行される)からこのバックグラウンドスレッドで行われた作業を消費する必要がある場合は、開始した初期化スレッドを確実にするために適切な同期が必要になりますApplication_Start
終わりました。正確なシナリオに応じて、それを達成するためのさまざまな方法があります。
これはあなたがそれを行う必要がある方法のサンプルです、基本的に私たちは接続を開始する関数delegate
になる匿名を作成しています。Invoke
if(this.InvokeRequired)
{
Invoke(new MethodInvoker( () => yourFunctionThatCreatesSomeConnections(Args)));
}
else
{
yourFunctionThatCreatesSomeConnections(Args);
}