如何在单击按钮之前暂停该功能

时间:2015-06-05 11:11:49

标签: c#

如何使用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一样工作,暂停函数直到获得输入。

2 个答案:

答案 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函数等待下载功能完成(或中断)。