立即运行一个新线程

本文关键字:一个 新线程 线程 运行 | 更新日期: 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();