繁体   English   中英

让代码运行X秒,然后停止

[英]Let code run for X seconds, after that stop

我正在使用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
}

您可以使用如下所示的内容:

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软件包:

将这段代码作为方法,使该方法单独运行。 启动计时器,经过10秒钟后,检查第一个线程的状态。 如果它已经获取了他应该做的所有内容,请利用它,否则终止线程,清理您必须清理的所有内容并返回错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM