// 定义一个ManualResetEvent实例m,用于跨线程的信号传递
ManualResetEvent manualResetEvent;
// 定义一个CancellationTokenSource实例TokenSource,用于创建和管理CancellationToken
CancellationTokenSource TokenSource;
// 定义一个CancellationToken实例CancellationToken,它用于通知任务应该取消
CancellationToken CancellationToken;
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;// 禁用对非法跨线程调用的检查
}
private void button1_Click(object sender, EventArgs e)
{
// 创建一个新的CancellationTokenSource实例
TokenSource = new CancellationTokenSource();
// 从TokenSource中获取CancellationToken
CancellationToken cancellationToken = TokenSource.Token;
// 创建一个新的ManualResetEvent实例,并初始化为已信号状态(即允许等待的线程继续执行)
manualResetEvent = new ManualResetEvent(true);
// 使用Task.Factory启动一个新的任务,并传入一个lambda表达式作为任务的入口点
new System.Threading.Thread(() =>
{
for (int i = 0; i < 1000; i++)
{
// 检查是否请求了取消
驾驭C#多线程的魔法棒:掌握启动、暂停、继续、关闭线程
最新推荐文章于 2025-12-04 15:52:21 发布
本文介绍了如何在WindowsForms应用程序中使用ManualResetEvent和CancellationTokenSource进行线程间的同步和取消操作,包括创建事件、管理CancellationToken以及处理线程间的通信和取消任务。

最低0.47元/天 解锁文章
540

被折叠的 条评论
为什么被折叠?



