私は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を作成し、最後にそれを破棄します。
これは重複する質問ではありません。私はその質問に対するすべての答えをテストしており、それは私のためには機能しません。私はこの問題を解決する方法を見つけたので、私はあなたと共有したいが、この質問が閉じられているので、私はできない。
をインスタンス化することです。タスクはスレッドではありません。 '新しいスレッド()。Start()'。 –
おそらく、すぐに実行されます。そうでない場合は、スレッドプールに過負荷がかかります。このコードが実行されるまでにどのくらい時間がかかりますか? – usr
@usrそのコードは21回呼び出されるメソッドなので。そのコードは日付付きのデータベースにデータを挿入し、他のすべてのプロセスが終了した後に21回挿入されたデータ(データベースに21行あります)をチェックしました。 – VansFannel