簡體   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