Task.run如何工作

时间:2015-05-19 11:47:39

标签: c# multithreading

Task.Run(() =>
{
     try
     {
         RunPrePopulation();
         List<TimeSlotInfo2> timeslotsAsync = GetTimeSlotsCompleteWebAPI(currentDate, timeslotLength, false, 30, false, -1, "", maUser);
         TimeslotsAllocation(timeslot, timeslotLength, currentDate, timeslotsAsync);
     }
     catch (Exception ex)
     {
         System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\dev\\logs\\Threaderrors.txt", true);
         file.Write(ex.StackTrace);
     }
});  

我正在制定自定义时间表算法,以帮助安排采访。通过jquery ajax调用调用此方法,该调用在完成时应该将用户重新命名为主页。

但是此任务似乎会锁定我的应用。这导致我的应用程序无法响应一分钟左右的任何请求。为什么?我认为在一个线程中运行它的重点是它不会锁定应用程序。

当该任务被注释掉时,问题就会消失。首先,这是在后台单独的线程上运行这些方法的正确方法吗? enter image description here

此屏幕是否表示antyhing显着?看起来我试图处理一切,但线程尚未完成

“sqldatareader.close”旁边的怪异图标是否意味着什么?

 public class OLB : IOLB
{

    private struct SlotResult
    {
        public List<Schedule> Nurses { get; set; }

        public List<Schedule> Appointments { get; set; }

        public TimeSlotInfo2 TimeSlotInfo { get; set; }

        public DateTime EndTime { get; set; }
    }

    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(OLB));
    private static readonly object locker = new object();

    private string sqlmartin = ConfigurationManager.ConnectionStrings["MartinConnectionString"].ConnectionString;

    private MARTINEntities martindb = new MARTINEntities();

    #region IDisposable

    // Flag: Has Dispose already been called?
    private bool disposed = false;

    // Public implementation of Dispose pattern callable by consumers.
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    // Protected implementation of Dispose pattern.
    protected virtual void Dispose(bool disposing)
    {
        if (disposed)
            return;

        if (disposing)
        {
            martindb.Dispose();
        }

        // Free any unmanaged objects here.
        //
        disposed = true;
    }

    #endregion IDisposable

每次上面的类都使用Idisposable接口时,它会显着降低所有内容。当它被移除时,它的工作速度要快得多。

两个问题 1)为什么我需要这个idisposeable 2)为什么会产生负面影响

0 个答案:

没有答案