我想学习关于线程暂停和恢复的工作逻辑。
Thread th=new Thread(start);
th.Start();
public void start()
{
command_1;
command_2;
command_3;
if(variable_condition)
goto Pause;
command_4;
command_5;
command_6;
command_7;
Pause:
pause();
}
private void pause()
{
th.Suspend();
}
private void button1_Click(object sender, EventArgs e)
{
th.Resume();
}
现在,当启动线程的命令继续?
command_1或command_4?
答案 0 :(得分:1)
根据编写的代码,Resume
将不起作用,因为启动函数执行已经在标签Pause
。所以,你最后会恢复,而这个功能只是在恢复时结束。
如果您想从command_4恢复,请更改
if(variable_condition)
goto Pause;
到
if(variable_condition)
pause();
并删除标签Pause
或者,如果编码之神要求使用GOTO:
Thread th=new Thread(start);
th.Start();
public void start()
{
command_1;
command_2;
command_3;
if(variable_condition)
goto Pause;
Pause:
pause();
command_4;
command_5;
command_6;
command_7;
}
private void pause()
{
th.Suspend();
}
private void button1_Click(object sender, EventArgs e)
{
th.Resume();
}
这是非常愚蠢的,但是......