簡體   English   中英

Windows Phone 7應用程序中的已完成和異步方法

[英]completed and async methods in windows phone 7 application

我在Windows Phone 7應用程序中使用完整和異步方法時遇到問題。

我的代碼在這里:

private void messageClient_getMessageOfUserCompleted(object sender, ADRTRYST_CLIENT.LocalHostMessageService.getMessageOfUserCompletedEventArgs e)
    {
        //lstBxMessages.ItemsSource = e.Result;

        System.Collections.ObjectModel.ObservableCollection<ADRTRYST_CLIENT.LocalHostMessageService.OBJMessage> mesList = e.Result;
        foreach (ADRTRYST_CLIENT.LocalHostMessageService.OBJMessage mes in mesList)
        {
            MessageObj message = new MessageObj();
            message.Date = mes.MessageDate;
            messageList.Add(message);
            ADRTRYST_CLIENT.LocalHostMemberShipService.MemberShipSoapClient memClient = new ADRTRYST_CLIENT.LocalHostMemberShipService.MemberShipSoapClient();
            MessageBox.Show(memClient.State.ToString());
            memClient.GetUserByUserIdCompleted += new EventHandler<ADRTRYST_CLIENT.LocalHostMemberShipService.GetUserByUserIdCompletedEventArgs>(memClient_GetUserByUserIdCompleted);  
            memClient.GetUserByUserIdAsync(mes.SenderUserID);

            lstBxMessages.Items.Add(mes.MessageDate);

        }
    }


    private void memClient_GetUserByUserIdCompleted(object sender, ADRTRYST_CLIENT.LocalHostMemberShipService.GetUserByUserIdCompletedEventArgs e)
    {

        ADRTRYST_CLIENT.LocalHostMemberShipService.OBJPerson user = e.Result;
        if (user != null)
            lstBxMessages.Items.Add(user.UserName);

    }

我期望看到消息的日期,然后在列表框中看到消息的發件人。 但是,首先列出所有日期,然后在列表框中列出發件人姓名。 我該如何解決這個問題?

因為事件是異步觸發的,所以首先將foreach循環中的所有MessageDates填充到ListBox中。 如果MessageDate不是完成的事件參數的一部分,則可以對完成的事件使用匿名方法,以用MessageDateUser填充列表框:

memClient.GetUserByUserIdCompleted += (obj, e) => 
{
    if (e.Result == null)
        return;

    lstBxMessages.Items.Add(mes.MessageDate);
    lstBxMessages.Items.Add(e.Result.UserName);
}
memClient.GetUserByUserIdAsync(mes.SenderUserID);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM