110,535
社区成员
发帖
与我相关
我的任务
分享
///点击按钮后,启动线程,调用执行函数test()
private void btn_Click(object sender, EventArgs e)
{
Thread th = new Thread(test);
th.IsBackground = true;
th.Start();
th.Join();///我用了join方法,结果程序就卡死了
MessageBox.Show("线程执行完毕", "提示");
}
public void test()
{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
}
var task = Task.Factory.StartNew(() => {});
task.Wait();
//另外说一下如果需要返回
public async Task<object> test()
{
//todo
return new object;
}
//直接使用
object o= test.result;
//await使用
object o=await test;
//等于在方法内写匿名方法实现你的线程调用方法,并且使用了等待。
await Task.Run(async ()=>{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
});
//拆分成方法
public async Task test()
{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
}
//调用
await test();
[/quote]
谢谢您的解答,那我总结一下,是这样用吗?不好意思,从没用过task,见谅。
///点击按钮后,启动线程,调用执行函数test()
private void btn_Click(object sender, EventArgs e)
{
await test();
MessageBox.Show("线程执行完毕", "提示");
}
public async Task test()
{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
}
[/quote]
是的,手敲代码可能有一些typo,你在ide里面自己修正一下就行了。
//等于在方法内写匿名方法实现你的线程调用方法,并且使用了等待。
await Task.Run(async ()=>{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
});
//拆分成方法
public async Task test()
{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
}
//调用
await test();
[/quote]
谢谢您的解答,那我总结一下,是这样用吗?不好意思,从没用过task,见谅。
///点击按钮后,启动线程,调用执行函数test()
private void btn_Click(object sender, EventArgs e)
{
await test();
MessageBox.Show("线程执行完毕", "提示");
}
public async Task test()
{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
}
//等于在方法内写匿名方法实现你的线程调用方法,并且使用了等待。
await Task.Run(async ()=>{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
});
//拆分成方法
public async Task test()
{
while (flag)//flag是一个循环开关,判断是否结束循环
{
if (满足条件)
{
flag = false;
}
Thread.Sleep(3000);
}
}
//调用
await test();
var task = Task.Run(()=> { });
task.ContinueWith
///点击按钮后,启动线程,调用执行函数test()
private void btn_Click(object sender, EventArgs e)
{
await test();
MessageBox.Show("线程执行完毕", "提示");
}
awati无法用在btn_Click事件里面[/quote]
private async void btn_Click(object sender, EventArgs e)
///点击按钮后,启动线程,调用执行函数test()
private void btn_Click(object sender, EventArgs e)
{
await test();
MessageBox.Show("线程执行完毕", "提示");
}
awati无法用在btn_Click事件里面