如何使用Thread / BackgroundWorker / Timer / AutoResetEvent或其他方法强制函数f等待/暂停/暂停,直到用户点击该按钮为止。
public Form1()
{
InitializeComponent();
if(f())
MessageBox.Show("returned");
}
bool b=false;
private void button1_Click(object sender, EventArgs e)
{
//do something
b=true;
}
bool f()
{
//what to put here
//should be here only after b==true
return true;
}
我可以比较它应该像Console.ReadKey一样工作,暂停函数直到获得输入。
答案 0 :(得分:1)
只要您点击按钮时只需要使用WebClient取消下载,您就可以使用异步下载:
private WebClient _webClient;
public Form1()
{
InitializeComponent();
_webClient = new WebClient();
_webClient.DownloadFileCompleted += (s, e) =>
{
try
{
if (e.Cancelled)
return;
//do something with your file
}
finally
{
_webClient.Dispose();
}
};
_webClient.DownloadFileAsync(...);
}
private void button1_Click(object sender, EventArgs e)
{
_webClient.CancelAsync();
}
答案 1 :(得分:0)
我只是这样管理:
我创建了后台工作器,可以在执行下载功能时单击按钮。
f函数等待下载功能完成(或中断)。