让代码在停止后运行X秒

本文关键字:运行 代码 | 更新日期: 2023-09-27 17:58:49

我正在使用Windows Phone 7.1应用程序,希望运行几行代码10秒,如果在10秒内成功,请继续,如果不成功,请停止代码并显示消息。问题是,我的代码不是一个循环——手机试图从服务器获取数据(如果互联网连接速度慢,可能需要太长时间)。

if (DeviceNetworkInformation.IsNetworkAvailable)
{
    // start timer here for 10s
    WebClient webClient = new WebClient();
    webClient.DownloadStringCompleted += loginHandler;
    webClient.DownloadStringAsync(new Uri(string.Format(url + "?loginas=" + login + "&pass=" + pwd)));
    // if 10s passed, stop code above and display MessageBox
}

让代码在停止后运行X秒

您可以使用以下内容:

HttpClient client = new HttpClient();
var cts = new CancellationTokenSource();
cts.CancelAfter(10000);
try
{
    var response = await client.GetAsync(new Uri(string.Format(url + 
            "?loginas=" + login + "&pass=" + pwd)), cts.Token);
    var result = await response.Content.ReadAsStringAsync();
    // work with result
}
catch(TaskCanceledException)
{
    // error/timeout handling
}

您需要以下NuGet软件包:

  • HttpClient
  • 异步/等待

将这段代码作为一个方法,使该方法单独运行。启动计时器,当10秒过去时,检查第一个线程的状态。如果它已经获取了他应该获取的所有内容,那么就利用它,否则就杀死线程,清理所有需要清理的内容,并返回错误消息。