亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下,新建一個C#控制臺應用程序,且在main方法中新建兩個線程,分別調用兩個方法:

如下,新建一個C#控制臺應用程序,且在main方法中新建兩個線程,分別調用兩個方法:

C#
慕婉清6462132 2022-05-19 16:15:23
method1(),method2(),method1()用于執行一個循環,值為1-1000000000,method2()用于監聽鍵盤輸入,當輸入A-Z任意鍵時循環暫停,按空格鍵循環繼續,按Esc循環退出,應用程序終止,現在method1()和method2()我已經完成了,剩下的就是線程調用的問題了,已經實現了按任意鍵停止,但是不能繼續,求高手幫忙解答,最好給段簡短的代碼。
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

使用Thread的Suspend方法可以暫停一個線程,Resume繼續,給你寫個例子吧

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Threading;

namespace ConsoleApplication1
{
class Program
{
static Thread th1;
static Thread th2;
static int value = 0;
static void Main(string[] args)
{
th1 = new Thread(new ThreadStart(Method1));
th2 = new Thread(new ThreadStart(Method2));
th1.Start();
th2.Start();
}
static void Method1()
{
for (int i = 0; i < 1000000000; i++)
{
value++;
}
Console.WriteLine("完成");
}
static void Method2()
{
while (true)
{
ConsoleKeyInfo read = Console.ReadKey();
if (char.IsLetter(read.KeyChar))
{
if (th1.ThreadState == ThreadState.Stopped)
{
Console.WriteLine("th1已停止,按Esc鍵退出");
continue;
}
th1.Suspend();
Console.WriteLine("th1已掛起,value為{0}", value);
}
else if (read.Key == ConsoleKey.Spacebar)
{
if (th1.ThreadState == ThreadState.Stopped)
{
Console.WriteLine("th1已停止,按Esc鍵退出");
continue;
}
else if (th1.ThreadState == ThreadState.Running)
{
Console.WriteLine("th1正在運行");
continue;
}
th1.Resume();
Console.WriteLine("th1繼續運行");
}
else if (read.Key == ConsoleKey.Escape)
{
th1.Abort();
th2.Abort();
return;
}
}
}
}
}



查看完整回答
反對 回復 2022-05-23
  • 1 回答
  • 0 關注
  • 178 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號