初试WPF代码迁移Core WPF

      最近2年一直能看到 Net Core的介绍,看到支持WPF和Winform引发了兴趣,写简单Demo运行看效果和了解部署。html

     如今准备把项目正式迁移到.Net Core, 就先用了一个比较单一的项目试试,编译很大部分很顺利经过,没有什么须要注意,async

也就没有什么印象,一运行不得了各类报错。 也没有去看具体缘由,先直接解决让程序运行正常。测试

 

1、BeginInvokethis

 
   public static void DoWork(Action action, int millisecond = 500)
        {
            new Action(() =>
            {
                System.Threading.Thread.Sleep(millisecond);
                Dispatcher.CurrentDispatcher.BeginInvoke(action);
            }).BeginInvoke(null, null);
        }

   之前的写法运行就报错,System.PlatformNotSupportedException:“Operation is not supported on this platform.”
   改后代码:  spa

 

 public static void DoWork(Action action, int millisecond = 500)
        {
            Task.Run(async () =>
            {
                await Task.Delay(millisecond);
                Dispatcher.CurrentDispatcher.Invoke(action);
            });
        }

     Dispatcher.CurrentDispatcher.BeginInvoke(action);不会执行action,code

   也须要改成:Dispatcher.CurrentDispatcher.Invoke(action); orm

 

2、System.Windows.Threading.DispatcherTimer htm

         var valueTimer = new System.Windows.Threading.DispatcherTimer();
            valueTimer.Interval = new TimeSpan(0, 0, 0, 0, 100);
            valueTimer.Tick += (obj, e) =>
            {
                ChangeRecognitionValue(() => { valueTimer.Stop(); });
            };
            valueTimer.Start();

运行没有效果,直接改成下面:ip

         var valueTimer = new System.Timers.Timer(1 * 100);
            valueTimer.Elapsed += (obj, e) =>
            {
                ChangeRecognitionValue(() => { valueTimer.Stop(); });
            };
            valueTimer.Start();

只是迁移一个控件,预览是否正常,瞬间不想去迁移。 由于.Net5又出来了,到时候直接往上面迁移。部署

PS: 准备测试.Net 5 第2个预览版 , 都准备好了 要求VS是16.6或者更新才能够,而个人是16.5.4,不支持…?

相关文章
相关标签/搜索