【问题标题】:My interface freezes when performing another task asynchronously异步执行另一个任务时我的界面冻结
【发布时间】:2020-06-21 10:01:50
【问题描述】:

对不起我的英语

我调用我的页面,叫做“MessagePage”,里面包含了初始化组件的方法“this.InitializeComponent();”。

我创建了一个在加载页面时调用的方法,称为“Page_Loaded”。

该方法中调用了另一个方法,该方法会加载大量数据以填充界面中的网格,该方法可能需要10秒才能执行。

但是,在此方法响应之前,我的界面被冻结。

我希望在请求数据时界面变得正常。

public MessagePage()
    {

        this.InitializeComponent();
    }

private async void Page_Loaded(object sender, RoutedEventArgs e)
    {await PopulateGrid();}

private async Task PopulateGrid() { //my code}

我已经感谢您的帮助。

【问题讨论】:

  • 您需要向我们展示PopulateGrid 的实际作用。仅仅因为它是 async 并不意味着它会在非 gui 线程上运行。
  • 我用了一段时间,等待 UDP 连接响应。

标签: c# windows xamarin uwp


【解决方案1】:

我通过在等待答案的 While 中创建任务解决了我的问题。像这样:

await Task.Run(() =>
            {
                while (!result)
                {
                    if (startTime.AddSeconds(10) < DateTime.Now)
                    {
                        break;
                    }
                }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多