初試WPF代碼遷移Core WPF


      最近2年一直能看到 Net Core的介紹,看到支持WPF和Winform引起了興趣,寫簡單Demo運行看效果和了解部署。

     現在准備把項目正式遷移到.Net Core, 就先用了一個比較單一的項目試試,編譯很大部分很順利通過,沒有什么需要注意,

也就沒有什么印象,一運行不得了各種報錯。 也沒有去看具體原因,先直接解決讓程序運行正常。

 

一、BeginInvoke

 
   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.”
   改后代碼: 

 

 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,

   也需要改為:Dispatcher.CurrentDispatcher.Invoke(action);

 

二、System.Windows.Threading.DispatcherTimer

         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();

運行沒有效果,直接改為下面:

         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,不支持…?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM