立即运行一个新线程
本文关键字:一个 新线程 线程 运行 | 更新日期: 2023-09-27 18:17:18
我正在开发一个WPF应用程序与c#和。net框架4.6.1和SQL Server 2012 SP3和实体框架6.1.3代码优先。
我需要立即运行一个线程,但现在它没有立即运行以下代码:
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
文档说:
将指定的工作排在线程池上运行,并返回一个Task对象。
但是我不想让它排队。
如何在不使用ThreadPool的情况下立即运行线程?
immediate表示不将任务推送到池中,等待轮到它。
我没有重用连接。每次我连接到数据库,我创建一个新的DbContext,并在最后销毁它。
这不是一个重复问题。我已经测试了这个问题的所有答案,但它不适合我。我已经找到了解决这个问题的方法,我想和你分享,但是我不能,因为这个问题是封闭的。
最简单的方法就是实例化一个Thread
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();