2

膨大なデータを実行するのに非常に時間がかかるので、Threading がすぐに仕事をしてくれるのではないかと考えました。

私がしていること : ASP.NET フロント エンドから SQL ストアド プロシージャを呼び出すと、そこで処理が行われ、ほぼ 30 時間かかります。

必要なもの:データを異なるバッチに分割し、それぞれに対応する SP を作成しました。ここで、ボタンを 1 回クリックするだけですべての SP を同時に実行する必要があります。

助けてください!

以下のコードを使用しましたが、並行して実行されていないようです。

 protected void Button3_Click(object sender, EventArgs e)
    {
        Thread t1 = new Thread(Method1);
        Thread t2 = new Thread(Method2);

        t1.Start();
        t2.Start();

        t1.Join();
        t2.Join();

    }
   void Method1()
    {
        for (int i = 0; i < 10000; i++)
        {
            Response.Write("hello1"+i);
            Response.Write("<br>");
        }
    }

   void Method2()
   {
       for (int i = 0; i < 10000; i++)
       {
           Response.Write("hello2" + i);

       }
   }
4

3 に答える 3

5

ワーカー プロセスの実行時間が限られているなど、さまざまな理由から、ASP.NET でこれを直接実行したくない場合があります。

SqlConnectionまた、 etcにも独自の時間制限があることに注意してください。

実際にすべきことは、(IPC または別のデータベース テーブルなどを使用して) 実行する作業をキューに入れ、スケジュールされたタスクで Windows サービスまたは外部プロセスのようなものを取得し、キューを介して処理することです。

なんと、SQL Server 内でジョブを開始して、そのジョブを直接実行させることさえできます。

于 2013-06-03T12:54:34.050 に答える
1

ナレンドラン、ここから始めてください。

http://www.albahari.com/threading/

これは私がオンラインで見た中で最高のスレッディング チュートリアルであり、それぞれの本も非常に優れています。

チュートリアル全体を完了するのに十分な時間を費やすようにしてください (私はそれをやったので、それだけの価値があると信じています!)。

上記のように、この場合、スレッド クラスの Join メソッドを使用すると、スレッドを使用する目的が無効になります。join を使用する代わりに lock (上記のチュートリアルの基本的な同期を参照) を使用して、スレッドが確実に同期されるようにします。

また、前述のように、マルチスレッドを実行する前に、これらのストアド プロシージャを SQL サーバー上で直接実行してください。それでも実行されるまでに 30 時間かかる場合は、スレッド化を使用しても何の効果もありません。30 時間未満の場合は、マルチスレッドの恩恵を受けることができます。

于 2013-06-03T13:28:38.573 に答える