110,571
社区成员
发帖
与我相关
我的任务
分享
private void button2_Click (object sender, EventArgs e)
{
Task T = Task.Run(() =>
{
DialogResult dr = MessageBox.Show("你确定要。。。。?","提示", MessageBoxButtons.OKCancel );
if(dr == DialogResult.OK )
{
SetText(textBox1, "99");
//in here add other code....
}
});
T.Wait();
//add other code .
}
//=============================================================================
private delegate void SetTextCallback(System.Windows.Forms.Control control, string text);
private static void SetText(System.Windows.Forms.Control control, string text)
{
if (control.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
control.Invoke(d, new object[] { control, text });
}
else
{
control.Text = text;
}
}
using System;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Task.Run(async () =>
{
var 内容 = await GetContent("");
Console.WriteLine("获取到的内容有 {0} 个字符。", 内容.Length);
});
Console.WriteLine("..................按任意键结束");
Console.ReadKey();
}
private static async Task<string> GetContent(string v)
{
var s = new WebClient().DownloadData("https://bbs.csdn.net/topics/392391014");
return Encoding.UTF8.GetString(s);
}
}
}
假设根本没有异步概念,那么满脑子就只有“阻塞、while循环”这类东西了。 Task.Run(async () =>
{
var c = await GetContent("");
Console.WriteLine("获取到的内容有 {0} 个字符。", c.Length);
进行分析(c);
});
这是异步的概念,也就是说是一件事完成了,那么那个线程接着做下面的事情。
而你说的“我想在T 完成后再执行后面的代码”则根本不是异步线程概念,你这个是阻塞概念。