我正在使用ProgressBar
并绑定来显示从远程设备接收文件时的进度。
<ProgressBar Width="500" Height="50" Value="{Binding ProgressFileReceive}"/>
ProgressFileReceive
是我视图模型的一个属性(double
),表示完成的百分比。因此,为了更新进度条,我会将这个数字加上去。
问题在于,我的文件传输方法在另一个async
方法中,所以要访问这个属性,我必须使用以下代码 :
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
// do something on the UI thread
ProgressFileReceive = (double)i / fileSize * 100;
});
这样可以工作,但会让整个过程变得非常缓慢,因为在每次迭代(由于我是逐字节读取),该方法必须使用调度程序来更新UI。接收整个文件所需的时间比如果我不更新UI要长几倍。
如何更有效地进行操作以加快进程?
RaisePropertyChanged
中设置访问器引发异常,那么它就是一个 Windows Store (Metro) 应用程序。 - Arctic Vowel