如何制作吸气剂和c#中的setter属性异步?

时间:2016-11-17 10:55:15

标签: c# asp.net mvvm async-await windows-mobile

我正在使用Windows移动应用程序并遵循MVVM结构。

我有一个方法,我绑定了“lst_activity”,它是Observable集合对象。

并且该列表在get方法中返回。

但问题是当我调用“List_ActivityType()”这个函数时,它不会等待响应。

如何制作吸气剂& c#中的setter属性async?

有相同的替代方案吗?

 ObservableCollection<Activity_Type> lst_activity = new ObservableCollection<Activity_Type>();

public  ObservableCollection<Activity_Type> Get_ActivityTypeData
            {
                get
                {
                    await List_ActivityType();  
                    return lst_activity;
                }
            }

            public async Task List_ActivityType()
            {
                try
                {

                    if (NetworkInterface.GetIsNetworkAvailable() == true)
                    {
                        IsolatedStorageSettings setting = IsolatedStorageSettings.ApplicationSettings;
                        if (setting.Contains("UserLogin_Code"))
                        {
                            string user_code = Convert.ToString(setting["UserLogin_Code"]);
                            if (!string.IsNullOrEmpty(user_code))
                            {
                                ShowProgressBar();
                                string str = ServiceURI.Get_Activity;
                                Uri geturi = new Uri(string.Format(str)); 
                                System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
                                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, geturi);
                                var response1 = await CommandClass.GetResponse<SilverHrms.Data.JsonPraserClasses.Activity_Type_RootObject>(request);
                                lst_activity.clear();
                                if (response1 != null && response1.Flag == true)
                                {
                                    for (int i = 0; i < response1.lstListComboData.Count; i++)
                                    {
                                        if (i == 0)
                                        {
                                            lst_activity.Add(new Activity_Type
                                            {
                                                Text = "--Select--",
                                                Value = ""
                                            });
                                        }
                                        lst_activity.Add(response1.lstListComboData.ElementAt(i));
                                    } 
                                }
                                else
                                {
                                    //Show_msg("Error", response1.Message);
                                }
                                CloseProgressBar();
                            }
                        }
                        else
                        {
                            App.RootFrame.Navigate(new Uri(PageNavigationURI.Login, UriKind.RelativeOrAbsolute));
                        }
                    }
                    else
                    {
                        if (!App.OnOff)
                        {
                            CloseProgressBar();
                            CommandClass.NetworkErrorMsg();
                        }
                    }
                }
                catch (Exception ex)
                {
                } 
            }

1 个答案:

答案 0 :(得分:-1)

相反等待,可能是您可以使用Dispatcher.BeginIvoke(()=&gt; {List_ActivityType()}); 基本上调度程序队列就是你的过程。