DispatcherHelper 的简单示例

发布于 2024-12-04 08:18:39 字数 211 浏览 1 评论 0原文

我试图弄清楚如何在 SL 中使用 DispatcherHelperftom MVVM 轻型工具包,但我找不到任何示例。

从这个框架的主页我知道

DispatcherHelper类,一个轻量级的类帮助你创建 多线程应用程序。

但我不知道如何使用它。

我可以如何使用它以及用它来做什么?

I'm trying to figure out how can I use DispatcherHelperftom MVVM light toolkit in SL, but I can't find any example.

From home page of this framework I know that

DispatcherHelper class, a lightweight class helping you to create
multithreaded applications.

But I don't know how to use it.

How and for what I can use it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜访吸血鬼 2024-12-11 08:18:39

仅当您想要通过在不同线程上运行的代码对 UI 线程上的组​​件进行更改时,才需要 DispatcherHelper。例如,在 Silverlight 应用程序中,您调用 Web 服务来异步检索一些数据,现在想要通过 OnNotifyPropertyChanged 事件通知 Ui 数据存在。

首先,您必须初始化DispatcherHelper。在 Silverlight 中,您可以在 Application_Startup 中执行此操作:

//initialize Dispatch helper
private void Application_Startup( object sender, StartupEventArgs e) {
    RootVisual = new MainPage();
    DispatcherHelper.Initialize(); 
}

在 WPF 中,初始化是在 App 类的静态构造函数中完成的:

static App() { 
    DispatcherHelper.Initialize();
}

然后在您的事件中,处理 asnc 调用的完成,使用以下代码来调用 < UI 线程上的 code>RaisePropertyChanged:

DispatcherHelper.CheckBeginInvokeOnUI(
    () => RaisePropertyChanged(PowerStatePropertyName)
);

DispatcherHelper.BeginInvokeOnUl 需要一个 Action,因此您可以在此处使用任何代码,只需用来

DispatcherHelper.CheckBeginInvokeOnUI(
    () => { /* complex code goes in here */ }
);

执行更多操作复杂的任务。

You only need the DispatcherHelper when yo want to make changes to components on your UI thread, from code that runs on a different thread. E.g. in an Silverlight application you call a web service to retrieve some data asynchroneously, and now want to inform the Ui that the data is present via a OnNotifyPropertyChanged event.

First you have to initialize the DispatcherHelper. In Silverlight you do this in Application_Startup:

//initialize Dispatch helper
private void Application_Startup( object sender, StartupEventArgs e) {
    RootVisual = new MainPage();
    DispatcherHelper.Initialize(); 
}

In WPF the initialization is done in the static constructor of you App class:

static App() { 
    DispatcherHelper.Initialize();
}

Then in your event, handling the completion of your asnc call, use the following code to call RaisePropertyChanged on the UI thread:

DispatcherHelper.CheckBeginInvokeOnUI(
    () => RaisePropertyChanged(PowerStatePropertyName)
);

DispatcherHelper.BeginInvokeOnUl expects an Action so you can use any code in here just use

DispatcherHelper.CheckBeginInvokeOnUI(
    () => { /* complex code goes in here */ }
);

to do more complex tasks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文