2016-11-10 7 views
-1

私はC#と.NET Framework 4.6.1とSQL Server 2012 SP3とEntity Framework 6.1.3コードファーストでWPFアプリケーションを開発しています。すぐに新しいスレッドを実行します

私はすぐにスレッドを実行する必要がありますが、今、それは、このコードですぐに実行されません:

Task.Run(() => 
{ 
    RequestNewCodes(); 
}); 
private void RequestNewCodes() 
{ 
    log.DebugFormat("Task thread ID: {0} - {1}", Thread.CurrentThread.ManagedThreadId, DateTime.UtcNow.ToString("hh:mm:ss.fff")); 

    try 
    { 
     trazabilidad.InsertNewCodesWeb(1, codesManagerURL); 
    } 
    catch (Exception ex) 
    { 
     log.Error(string.Format("InsertNewCodesWeb nivel 1: {0}", ex.ToString())); 
    } 
} 

Task.Runドキュメントは言った:

は、スレッドプールで実行するように指定された作業をキューその作業を表すタスク オブジェクトを返します。

しかし、私はそれをキューに入れたくありません。

ThreadPoolを使用せずにスレッドをすぐに実行できますか?

直ちに、プール内のタスクをプッシュしてそのターンを待つことを意味しません。

私は接続を再利用していません。データベースに接続するたびに、新しいDbContextを作成し、最後にそれを破棄します。

これは重複する質問ではありません。私はその質問に対するすべての答えをテストしており、それは私のためには機能しません。私はこの問題を解決する方法を見つけたので、私はあなたと共有したいが、この質問が閉じられているので、私はできない。

+0

をインスタンス化することです。タスクはスレッドではありません。 '新しいスレッド()。Start()'。 –

+1

おそらく、すぐに実行されます。そうでない場合は、スレッドプールに過負荷がかかります。このコードが実行されるまでにどのくらい時間がかかりますか? – usr

+0

@usrそのコードは21回呼び出されるメソッドなので。そのコードは日付付きのデータベースにデータを挿入し、他のすべてのプロセスが終了した後に21回挿入されたデータ(データベースに21行あります)をチェックしました。 – VansFannel

答えて

2

最も簡単な方法は、ちょうど糸を使用することによりスレッド

Thread task = new Thread(()=> 
{ 
    try 
    { 
     ConnectToCodeManager(); 

     string connectionString = ConfigurationManager.ConnectionStrings["DataBaseConnection"].ConnectionString; 

     SQLTrazabilidadStorage storage = new SQLTrazabilidadStorage(connectionString); 

     storage.SendAggregation(parentCode, codesManagerURL); 
    } 
    catch (Exception ex) 
    { 
     log.Error(string.Format("SendAggregation to TrzCodesManagerWS: {0}", ex.ToString())); 
    } 
}); 
task.Start(); 
+2

ThreadPoolに何か問題はありません。未処理のスレッドを開始しても、データアクセスコード –

+0

の同時実行性の問題は解決されませんが、実行方法と実行時間をより詳細に制御する簡単な方法です。 今のところ、彼が記述している並行性の問題であるのか、VansFannelだけでそのアクションを制御したいのかは言えません。 –

+1

いいえ、あなたはもっと遅れが出ます - あなたは*多くの時間がかかるスレッドを作成する必要があります。 ThreadPoolには即座に使用できるすぐに使えるスレッドが含まれています。 ThreadPoolには何千ものスレッドが含まれている可能性があります。 –

関連する問題