建立 Winform Aspnetcore Signalr Client

首先要使用 .net framework 4.6.1 或以上版本,主因在於 asp.net core signalr 最低要求支援環境(這裡是使用 .net standard library)。

 

其次,在 Winform 因為有執行序的問題,因此,在 console 的範例呼叫方式:

_hub.StartAsync().Wait();

ConnectToHub().Wait();

 

在 winform 上會變成沒有回應(因為在等待 Wait() 執行完畢)。

正確做法是透過 Task.Run() 產生新的執行序:

Task.Run(() =>
{
_hub.StartAsync().Wait();

ConnectToHub().Wait();

});

 

但此時又會有無法存取 UI thread 的 controls(例如 textBox);因此必須要在 Form intialized 時候,加入:

CheckForIllegalCrossThreadCalls = false;

這代表不檢查控制項的安全執行緒呼叫,如此,就可以正確執行。

解決windows 10 升級後,無法遠端連線問題

在某一次升級後,發生遠端連線到其他電腦出現錯誤:

原因應該是出在被連線的電腦並沒有執行 windows update,但有些時候主機可能沒有權限,或者其他考量無法更新。因此如何解決(與解決後,微軟已經修復這個問題,該如何還原)。因此紀錄以下過程:

首先要執行 gpedit.msc【群組原則】後,在以下的【電腦設定】->【系統管理範本】->【系統】中:

點選【認證委派】,在【加密 Oracle 補救措施】 設定已啟用即可:

原先的未設定改為【已啟用】就可以進行遠端連線了:

解決 windows 10 KB4054517 一直卡在:準備 windows update 請勿關機

最近遇到一個非常麻煩的問題,只要一重新開機,就會進入到藍色的畫面,顯示:【正在準備 windows,請不要關閉電腦】;然後就不會動,要等好幾個小時才會再次進入到 windows 畫面。最氣人的是:當我們以為這樣就已經更新了,其實不然,下次再重新啟動,還是一樣的問題!

查了下這是一個著名的 99% KB4054517 更新問題,會導致 windows 認為可以執行更新,但其實根本無法完成更新檔下載。

解決方案如下:

  • 先刪除 windows modules installer worker,否則無法停用【服務】

  • 停用 windows update 服務:

  • 打開 C 槽,刪除 c:\windows\SoftwareDistribution 中的 DataStore & Download

  • SoftwareDistribution 目錄命名為: SoftwareDistribution.old

 

  • windowsupdate 中下載獨立的更新檔案(以 64BIT 為例),並手動安裝更新

  • 最後不要忘記再次打開 windows update 服務

 

新電腦加入舊硬碟方案

最近購買一台新筆電,必須要將舊的 SSD 硬碟加入。

首先需要面對的問題就是要處理磁碟分割,win 10 採用  UEFI,因此都使用 GPT 處理分割,遇到的問題在於會多出一些分割表

其中修復分割區(約300MB)是微軟用來在需要修復系統的情況,供給Windows RE(Windows Recovery Environment)存取之用,這個分割表會變成下圖的【良好(磁碟分割)】:

而這個分割是無法使用上述工具刪除,必須要使用 DISKPART 處理,以下引用 [Win] 刪除修復磁碟分割  圖片說明作法:

請注意這裡的 0, 1, 2 要參考上圖的號碼,否則無法辨識,小心刪除掉目前使用的作業系統磁碟!

接下來就可以初始化磁碟機,同樣採用 GPT 格式建立新的磁碟機了。