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调用调用此方法,该调用在完成时应该将用户重新命名为主页。
但是此任务似乎会锁定我的应用。这导致我的应用程序无法响应一分钟左右的任何请求。为什么?我认为在一个线程中运行它的重点是它不会锁定应用程序。
当该任务被注释掉时,问题就会消失。首先,这是在后台单独的线程上运行这些方法的正确方法吗?
此屏幕是否表示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)为什么会产生负面影响