立即运行新主题

时间:2016-11-10 08:06:04

标签: c# multithreading

我正在使用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并在最后销毁它。

这不是一个重复的问题。我已经测试了该问题的所有答案,但它对我没有用。我已经找到了如何解决这个问题,我想与你分享,但我无法解决这个问题。

1 个答案:

答案 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();