伪代码为:
try
{
if (helper.TogetherBookThread != null && helper.TogetherBookThread.IsAlive) { return; }
helper.TogetherBookThread = new Thread(new ThreadStart(delegate()
{
try
{
while (true)
{
if (helper.TicketQuery != null)
{
Dictionary<string, TicketOrderCSun> TicketOrderCSunDic = helper.TicketQuery.TicketOrderCSunDic;
foreach (var cSun in TicketOrderCSunDic.Values)
{
bool flag = helper.DetermineBookOrderNewAction(cSun, helper);
if (flag)
{
Thread.CurrentThread.Abort();
}
}
}
Thread.Sleep(1);
}
}
catch (ThreadAbortException)
{
}
catch (Exception ex)
{
if (!(ex is ThreadAbortException))
{
NetTicketCommonUtil.WriteTicketInfo("TogetherBookDetermineBookOrderThread " + ex.Message + " source:" + ex.StackTrace);
}
}
}));
helper.TogetherBookThread.IsBackground = true;
helper.TogetherBookThread.Priority = ThreadPriority.Highest;
helper.TogetherBookThread.Start();
//helper.TogetherBookThread.IsBackground = true;
//helper.TogetherBookThread.Priority = ThreadPriority.Highest;
////helper.TogetherBookThread.ApartmentState = ApartmentState.STA;
//helper.TogetherBookThread.Start();
}
catch (Exception ex)
{
if (!(ex is ThreadAbortException))
{
NetTicketCommonUtil.WriteTicketInfo("TogetherBookDetermineBookOrderThreadAAA:" + ex.Message + " source:" + ex.StackTrace);
}
}
每隔一毫秒就在里面判断是否有执行的任务,如果,有任务执行,并且成功,就退出线程。但是经常出现闪退。程序外面我已经加了全局捕获。但是无法捕获闪退日志。我查看windows日志,提示。
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.NullReferenceException
Stack:
at NetTicket.Actions.NetTicketHelper+<>c__DisplayClassc.b__a()
at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ThreadHelper.ThreadStart()
提示空指针异常。我里面都执行都是try catch过。不明白为什么闪退。全局都是无提示的。。找了很久不知道原因