1
我會通過發佈這是困擾代碼開始:C#等待lambda函數
public async Task main()
{
Task t = func();
await t;
list.ItemsSource = jlist; //jlist previously defined
}
public async Task func()
{
TwitterService service = new TwitterService(_consumerKey, _consumerSecret);
service.AuthenticateWith(_accessToken, _accessTokenSecret);
TwitterGeoLocationSearch g = new TwitterGeoLocationSearch(40.758367, -73.982706, 25, 0);
SearchOptions s = new SearchOptions();
s.Geocode = g;
s.Q = "";
s.Count = 1;
service.Search(s, (statuses, response) => get_tweets(statuses, response));
void get_tweets(TwitterSearchResult statuses, TwitterResponse response)
{
//unimportant code
jlist.Add(info);
System.Diagnostics.Debug.WriteLine("done with get_tweets, jlist created");
}
我有與get_tweets問題(..)功能在運行中(我相信什麼不同的線程)和任務t不像我在主函數中那樣等待。基本上,我的問題是,list.Itemsource = jlist在get_tweets函數完成之前運行。有沒有人有解決方案或正確的方向指向我?
你沒有得到警告說,你的'FUNC()'異步方法不包含任何'await'聲明? –
我認爲您沒有複製足夠的代碼來查看問題所在;例如,func()沒有await語句,所以應該同步運行。 – antlersoft
@antlersoft不,有足夠的代碼。問題是他使用了一個回調方法,所以它是異步的,但它使用了一個非任務異步模型。這是根本問題。 – Servy