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

标签 c# silverlight windows-phone-7 timer windows-phone

我正在开发 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 包:

关于c# - 让代码运行 X 秒,然后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131559/

相关文章:

c# - 无需用户干预即可获取访问 token C# SDK

c# - TweetSharp SendTweetWithMediaOptions 示例

silverlight - 如何在 wp7 上启用键盘上的输入按钮?

c# - Windows Phone 中的后台线程

c# - 列表框的 Windows Phone 7 空数据消息?

c# - 如果初始化失败,如何将 IDisposable 对象传递给在 C# 中处理的基本构造函数参数?

silverlight - Silverlight 库的多个实例

WPF 到 silverlight xaml 问题

windows-phone-7 - 异步等待 task.run - 未找到

c# - 数据库类中的连接泄漏