前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET MAUI实战 Dispatcher

.NET MAUI实战 Dispatcher

作者头像
JusterZhu
发布2022-12-07 20:47:54
3880
发布2022-12-07 20:47:54
举报
文章被收录于专栏:JusterZhuJusterZhu

详细内容

这一期分享的内容非常简单,在之前使用过WPF的开发者对MVVM开发模式下ViewModel中后台线程转UI线程并不陌生使用Appplication.Current.Dispatcher。那么在.NET MAUI中也有同样的机制,存在于.NET MAUI Shell对象中。

那么什么是Shell?

官网描述如下,.NET 多平台应用 UI (.NET MAUI) Shell 通过提供大多数应用所需的基本功能(包括:

  • 用于描述应用的视觉层次结构的单个位置。
  • 常见的导航用户体验。
  • 基于 URI 的导航方案,允许导航到应用中的任何页面。
  • 集成的搜索处理程序。

其他内容就不搬运了,大伙可以参考下面链接内容。

ref:https://docs.microsoft.com/zh-cn/dotnet/maui/fundamentals/shell/

接下来我们直接来看看实际运用是如何的,代码如下:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MauiApp1.ViewModels
{
    public class MainViewModel
    {
        public void Do() 
        {
            //同步
            Shell.Current.Dispatcher.Dispatch(() =>
            {
                //code...
            });

            //异步非阻塞
            Shell.Current.Dispatcher.DispatchAsync(() => 
            {
                //code...
            });

            //延迟1s
            Shell.Current.Dispatcher.DispatchDelayed(new TimeSpan(1000), () =>
            {
                //code...
            });
        }
    }
}

如果在MVVM开发模式下,还想在ViewModel中弹出消息框,那么同样也可以在Shell中访问。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MauiApp1.ViewModels
{
    public class MainViewModel
    {
        public void Do() 
        {
            Shell.Current.DisplayAlert("message title","message content","cancel");
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JusterZhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 详细内容
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档