c#线程启动while(true)死循环,⾥边的return导致线程退出情
况,查错
写了⼀个线程线程下启动了⼀个循环
while(true)
{
⾥边有个判断如果为空不操作, 有余这个线程是后加的,⽼程序⾥边因为有个return没关注,导致线程退出⽽不能不听的监控
}
线程启动⼀个循环,这个循环要不听监控队列⾥边的值,有值操作,没值我给return了,所以出现了显⽰⼀会然后就不显⽰了.
有余是远程操作,有余调试机在内⽹,客户那边没做nat穿越,只能⼀点点加log 判断程序跑到哪⾥了
后来发现线程竟然⽆缘⽆故的退出了,
⽽不是通过我的退出机制退出,后来检查了⼀下才恍然⼤悟.
⼀下红线部分,作为记号吧
void MakeNextResult()
{
while (IsNextStartRead) //设备已经连接上,设备断链后,赋值为false ⽤于循环退出
{
CreateTxt.WriteDevLog(IsNextStartRead+ "IsNextStartRead为真", "devlog3");
if (NextListQueue.Count > 0)
{
try
{
CreateTxt.WriteDevLog(NextListQueue.Count + "队列数量", "devlog3");
string result = NextListQueue.Dequeue();
nextcount++;
ConfigHelper.UpdateAppConfig("nextcount", nextcount.ToString());
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //DateTime.Now.ToLongTimeString();
// CreateTxt.WriteLock(result + "\t" + time, "Tiao");
if (nextisshow == true)
{
CreateTxt.WriteDevLog("nextisshow为真", "devlog3");
ScanResultArgs n_scanresultargs = new ScanResultArgs();
n_scanresultargs.Scan_Result = result;
N_ScanResultEvent(n_scanresultargs);
ScanCoutArgs scancountargs = new ScanCoutArgs();
scancountargs.Scan_Sum = nextcount.ToString();
N_ScanCoutEvent(scancountargs);
}
else
{
CreateTxt.WriteDevLog("nextisshow为假", "devlog3");
}
bool isinlist = ReadListHelper.IsResultInList(result);
while语句怎么输出if (isinlist) //若出现相同的给return 了,此处是后来换成的continue;
{
continue;
}
else
{
CreateTxt.WriteLock(result + "\t" + "next" + "\t" + time, "First");
}
}
catch (Exception ex)
{
CreateTxt.WriteDevLog(ex.ToString(), "devlog");
}
}
else
{
CreateTxt.WriteDevLog("队列⽆值为休息三秒", "devlog3");
//没有任务,休息3秒钟
Thread.Sleep(3000);
}
Thread.Sleep(60);
}
CreateTxt.WriteDevLog("线程退出", "devlog3");
}
C#编程语法中break ,continue, return这三个常⽤的关键字的学习对于我们编程开发是⼗分有⽤的,那么本⽂就向你介绍break ,continue, return具体的语法规范。
C#编程语法中我们会碰到break ,continue, return这三个常⽤的关键字,那么关于这三个关键字的使⽤具体的操作是什么呢?我们在使⽤这三关键字的时候需要注意和需要理解的规则是什么呢?让我们开始介绍吧:
⼀、C#编程语法之break语句:
break语句会使运⾏的程序⽴刻退出包含在最内层的循环或者退出⼀个switch语句。由于它是⽤来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。
如果⼀个循环的终⽌条件⾮常复杂,那么使⽤break语句来实现某些条件⽐⽤⼀个循环表达式来表达所有的条件容易得多。
for(var i=1;i<=10;i++)
{ if(i==6) break;
document.write(i);
}
//输出结果:12345
⼆、C#编程语法之continue语句:
continue语句和break语句相似。所不同的是,它不是退出⼀个循环,⽽是开始循环的⼀次新迭代。
continue语句只能⽤在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地⽅使⽤都会引起错误!
for(var i=1;i<=10;i++)
{ if(i==6) continue;
document.write(i);
}
//输出结果:1234578910
三、C#编程语法之return语句:
return语句就是⽤于指定函数返回的值。return语句只能出现在函数体内,出现在代码中的其他任何地⽅都会造成语法错误!
当执⾏return语句时,即使函数主体中还有其他语句,函数执⾏也会停⽌!
C#编程语法中的break ,continue, return这三个常⽤的关键字的使⽤相关内容就向你介绍到这⾥,希望对你了解和学习break ,continue, return 这三个常⽤关键字的使⽤有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论