我會盡量簡化我的情況,使之更加簡潔明瞭。因此,我正在開發一個WinRT應用程序,用戶在2秒鐘後輸入TextBox
和TextChanged
事件中的文本時,需要根據用戶文本進行遠程請求以獲取數據。如果收到新請求,如何取消上一個任務?
現在用戶輸入文本並且Web請求已被初始化,但立即用戶寫入另一個術語。所以,我需要取消第一個Web請求並開啓新的請求。
考慮以下爲我的代碼:
private CancellationTokenSource cts;
public HomePageViewModel()
{
cts = new CancellationTokenSource();
}
private async void SearchPeopleTextChangedHandler(SearchPeopleTextChangedEventArgs e)
{
//Cancel previous request before making new one
//GetMembers() is using simple HttpClient to PostAsync() and get response
var members = await _myService.GetMembers(someId, cts.Token);
//other stuff based on members
}
我知道CancellationToken
在這裏扮演一個角色,但我不能弄清楚如何。