1

ASP.NET MVCでは、アプリケーションの起動時に、バックグラウンドでいくつかの接続(LDAP、…)を行う必要があります。ASP.NET MVCアプリケーションでこの「スレッドセーフ」を実行する方法はありますか?

ありがとう、

4

2 に答える 2

2

AS.NETでバックグラウンドタスクを実行することは避けてください。ただし、何らかの理由でそれを実行する必要がある場合は、で新しいスレッドを開始して、Application_Startそれらのタスクを実行できます。実行は1回だけなのでApplication_Start、このスレッドは1回実行されます(もちろん、タイマーを構成する場合を除きます->おそらく実行すべきではありません)。

一方、ASP.NET MVCコントローラー(HTTP要求のコンテキスト内で実行される)からこのバックグラウンドスレッドで行われた作業を消費する必要がある場合は、開始した初期化スレッドを確実にするために適切な同期が必要になりますApplication_Start終わりました。正確なシナリオに応じて、それを達成するためのさまざまな方法があります。

于 2012-06-25T06:58:24.780 に答える
0

これはあなたがそれを行う必要がある方法のサンプルです、基本的に私たちは接続を開始する関数delegateになる匿名を作成しています。Invoke

if(this.InvokeRequired)
{
    Invoke(new MethodInvoker( () => yourFunctionThatCreatesSomeConnections(Args)));
}
else
{
yourFunctionThatCreatesSomeConnections(Args);
}
于 2012-06-25T06:53:56.223 に答える