我正在使用C#和.NET Framework 4.6.1以及SQL Server 2012 SP3和Entity Framework 6.1.3 Code First开发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
文件说:
将指定的工作排队以在线程池上运行并返回Task 表示该工作的对象。
但我不想排队。
如何在不使用ThreadPool的情况下立即运行线程?
立即意味着不要将任务推入池中并轮流等待。
我没有重复使用连接。每次我连接到数据库时,我都会创建一个新的DbContext并在最后销毁它。
这不是一个重复的问题。我已经测试了该问题的所有答案,但它对我没有用。我已经找到了如何解决这个问题,我想与你分享,但我无法解决这个问题。
答案 0 :(得分:2)
最简单的方法是实例化一个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();