上图的所有多线程案例大全完整版本项目源代码下载---->点击下载
多线程是指在同一时间段内,有多个线程在执行不同的任务。多线程的作用包括:
-
提高程序的效率:通过同时执行多个任务,可以提高程序的执行效率。
-
更好的用户体验:多线程可以让程序在执行某个任务时,同时响应用户的输入或请求,提供更好的用户体验。
-
更好的资源利用:多线程可以让多个处理器或核心同时工作,更好地利用计算机的资源。
取消在运行的多线程的原因可能有以下几点:
-
节省资源:当不再需要某个线程时,取消该线程可以释放其占用的系统资源,如内存等。
-
避免不必要的影响:如果一个线程正在执行一个长时间的操作,并且在该操作完成之前不需要该线程,则取消该线程可以避免不必要的影响,例如防止其他任务无法执行。
-
错误处理:如果一个线程在执行过程中出现错误,取消该线程可以确保错误得到正确处理,而不会继续执行可能有害的操作。
private CancellationTokenSource[] cancellSource = new CancellationTokenSource[5];
private void button20_Click(object sender, EventArgs e)
{
Action<CancellationTokenSource> action = mi =>
{
while (true)
{
if (mi.IsCancellationRequested)
{
break;
}
Console.WriteLine($"task-->次执行,线程{Thread.CurrentThread.ManagedThreadId}运行中…");
Thread.Sleep(2000);
}
};
List<int> list = new List<int>();
for (int i = 0; i < 5; i++)
{
//list.Add(i);
int k = i;
cancellSource[k] = new CancellationTokenSource();
Task.Run(() => action.Invoke(cancellSource[k]));
}
private void button19_Click(object sender, EventArgs e)
{
int num = 0;
if (!int.TryParse(textBox1.Text.Trim(), out num))
{
MessageBox.Show("请输入数字...!");
return;
}
if (num > 4)
{
MessageBox.Show("请输入0-4数字!");
return;
}
//注册任务取消的事件
cancellSource[num].Token.Register(() =>
{
Console.WriteLine($"任务-->{num}被取消后执行业务操作!");
});
cancellSource[num].Cancel();//方法请求取消任务,IsCancellationRequested会变成true
}