gpt4 book ai didi

c# - 在 .Net 中阻塞一个线程

转载 作者:行者123 更新时间:2023-11-30 13:51:59 27 4
gpt4 key购买 nike

我有一个具有纯静态方法和属性的类。我在类“Load”上调用一个异步方法,它向 Web 服务请求一大块数据,然后触发一个事件来执行返回方法“LoadCompleted”。我不知道调用需要多长时间(调用“Load”方法与调用“LoadCompleted”方法之间的区别)。

我想阻止应用程序继续进行,直到引发回调方法(因为应用程序将尝试从此类中获取内容,直到“LoadComplete”方法设置数据后才会填充该类)。我该怎么做呢?

最佳答案

应避免极端偏见地阻止主 UI 线程。

我会使用 Silverlight 工具包中的 BusyIndi​​cator 控件:-

<UserControl x:Class="StackoverflowSpikes.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">

<toolkit:BusyIndicator x:Name="busyInd" >
<Grid x:Name="LayoutRoot">
<!-- The rest of your content -->
</Grid>
</toolkit:BusyIndicator>

</UserControl>

在调用 Load 之前使用:-

busyInd.IsBusy = true;

然后在 LoadComplete 上使用:-

busyInd.IsBusy = false;

这将在不阻塞主线程的情况下锁定 UI 上的用户输入,并向用户提供一些反馈,说明为什么他们现在无法单击任何内容。您可以使用 BustContent 属性为忙碌消息提供您自己的内容。当然,如果您不喜欢它的外观,您可以根据自己的喜好设计它。

如果您想要获得所有 MVVM,您可以将 IsBusy 属性绑定(bind)到一个 VM 属性,该属性指示 VM 现在不想做任何更改。

关于c# - 在 .Net 中阻塞一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3477479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com