【发布时间】:2022-09-28 15:53:06
【问题描述】:
我正在将旧的 Silverlight 应用程序移植到 OpenSilver。在整个 Silverlight 代码中有 if( <control>.CheckAccess())... 以确保位于正确的线程上。我的印象是在 OpenSilver 中不再需要此检查吗?换句话说,以下 Silverlight 代码可以转换为以下内容:
是的,我知道基于回调的异步方法已被等待任务取代。我将在下一个问题here 中询问有关该转换的一些问题。这个问题完全是关于 Dispatcher.CheckAccess 的命运
银光:
private void GetNextImage()
{
var cmc = ServiceFactories.CreateCartManager();
cmc.getSlideImageCompleted += (s, e) =>
{
if (imageGrid.CheckAccess())
{
cmc_getSlideImageCompleted(s, e);
}
else
{
var args = new object[] { s, e };
imageGrid.Dispatcher.BeginInvoke(new getSlideImageCompletedDelegate(cmc_getSlideImageCompleted),
args);
}
};
var lastTime = SystemSettings.GetInstance().SlideShowData.LastImageTime;
cmc.getSlideImageAsync(string.IsNullOrEmpty(lastTime) ? null : lastTime);
}
到 OpenSilver:
private void GetNextImage()
{
var cmc = ServiceFactories.CreateCartManager();
cmc.getSlideImageCompleted += (s, e) =>
{
cmc_getSlideImageCompleted(s, e);
};
var lastTime = SystemSettings.GetInstance().SlideShowData.LastImageTime;
cmc.getSlideImageAsync(string.IsNullOrEmpty(lastTime) ? null : lastTime);
}
标签: c# .net silverlight dispatcher