PictureBox.LoadAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
非同步載入影像。
多載
| 名稱 | Description |
|---|---|
| LoadAsync(String) |
非同步載入指定位置的影像。 |
| LoadAsync() |
非同步載入影像。 |
LoadAsync(String)
非同步載入指定位置的影像。
public:
void LoadAsync(System::String ^ url);
public void LoadAsync(string url);
member this.LoadAsync : string -> unit
Public Sub LoadAsync (url As String)
參數
- url
- String
影像在 中顯示 PictureBox的路徑。
範例
以下程式碼範例示範如何使用此 LoadAsync 方法。 要執行此範例,請將以下程式碼貼入包含 PictureBoxpictureBox1 named 和 ButtonstartLoadButtonnamed 的 Windows 表單中。 請確保 Click 按鈕的事件與此範例中的方法相關聯 startLoadButton_Click 。 你必須將映像檔路徑改成你系統上有效的路徑。
private void startButton_Click(object sender, EventArgs e)
{
// Ensure WaitOnLoad is false.
pictureBox1.WaitOnLoad = false;
// Load the image asynchronously.
pictureBox1.LoadAsync(@"http://localhost/print.gif");
}
Private Sub startLoadButton_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles startLoadButton.Click
' Ensure WaitOnLoad is false.
pictureBox1.WaitOnLoad = False
' Load the image asynchronously.
pictureBox1.LoadAsync("http://localhost/print.gif")
End Sub
備註
若參數 url 表示本地檔案,建議格式為本地檔案路徑。 例如,位於 c:\ 的影像檔案 myPicture.jpg 可透過傳遞c:\myPicture.jpgurl參數來存取。 可以使用完整路徑,例如 http://www.contoso.com/path/images/image.jpg,或相對路徑,例如 ./images/image.jpg,。 若使用相對路徑,則會視為相對於工作目錄的路徑。 呼叫該 Load 方法會將屬性設定 ImageLocation 為參數的 url 值。
呼叫該 LoadAsync 方法時,將屬性設定 ImageLocation 為 的 url值。 除了呼叫方法外 LoadAsync ,你還必須設定 WaitOnLoad 屬性 為 才能 false 非同步載入影像。 當你非同步載入影像時,你可以處理 LoadProgressChanged 事件來判斷影像載入進度,或處理 LoadCompleted 判斷影像載入完成的事件。 若在非同步影像載入操作中發生錯誤,將被捕捉並由 Error 的特性 AsyncCompletedEventArgs回報。
此方法在任務中儲存所有非使用例外,該方法的同步對應程式可拋出這些例外。 如果回傳的任務中儲存了例外,該例外會在等待任務時拋出。 使用例外錯誤,例如 ArgumentException,仍會同步拋出。 關於儲存的例外,請參見由 Load(String)拋出的例外。
負載行為的變化
從 .NET 8 開始,控制器載入遠端映像的行為 PictureBox 改變了。 預設情況下,該 System.Net.ServicePointManager.CheckCertificateRevocationList 屬性會設定為 true ,在遠端映像檔下載之前 WebClient。 此設定確保擁有憑證的伺服器在驗證過程中會被與憑證授權中心撤銷清單(CRL)進行核對。
警告
一旦載入遠端映像檔, CheckCertificateRevocationList 就會被改成 true 應用程式的整個壽命。 如果需要,你可以手動回復 false ,但一旦載入另一張遠端影像, CheckCertificateRevocationList 就會設定為 true。
當本地快取的 CRL 過期且無法取得更新時,原本可用的遠端資源可能會無法載入。 這可能發生在應用程式運行的網路受限且 CRL 位置不在允許清單上時。
也有可能延遲檢查 CRL 會影響應用程式的運作能力。
你可以透過以下方式之一設定 System.Windows.Forms.ServicePointManagerCheckCrl 應用程式的選項來選擇退出此行為:
在 [app].runtimeconfig.json 設定檔中設定屬性為
false:{ "configProperties": { "System.Windows.Forms.ServicePointManagerCheckCrl": false } }在專案檔案中新增
<RuntimeHostConfigurationOption>一個項目以停用它:<ItemGroup> <RuntimeHostConfigurationOption Include="System.Windows.Forms.ServicePointManagerCheckCrl" Value="false" /> </ItemGroup>
適用於
LoadAsync()
非同步載入影像。
public:
void LoadAsync();
public void LoadAsync();
member this.LoadAsync : unit -> unit
Public Sub LoadAsync ()
備註
除了呼叫該方法外 LoadAsync , WaitOnLoad 還必須設定 屬性為 才能 false 非同步載入影像。 當你非同步載入影像時,你可以處理 LoadProgressChanged 事件來判斷影像載入進度,或處理 LoadCompleted 判斷影像載入完成的事件。
此方法在任務中儲存所有非使用例外,該方法的同步對應程式可拋出這些例外。 如果回傳的任務中儲存了例外,該例外會在等待任務時拋出。 使用例外錯誤,例如 ArgumentException,仍會同步拋出。 關於儲存的例外,請參見由 Load()拋出的例外。
負載行為的變化
從 .NET 8 開始,控制器載入遠端映像的行為 PictureBox 改變了。 預設情況下,該 System.Net.ServicePointManager.CheckCertificateRevocationList 屬性會設定為 true ,在遠端映像檔下載之前 WebClient。 此設定確保擁有憑證的伺服器在驗證過程中會被與憑證授權中心撤銷清單(CRL)進行核對。
警告
一旦載入遠端映像檔, CheckCertificateRevocationList 就會被改成 true 應用程式的整個壽命。 如果需要,你可以手動回復 false ,但一旦載入另一張遠端影像, CheckCertificateRevocationList 就會設定為 true。
當本地快取的 CRL 過期且無法取得更新時,原本可用的遠端資源可能會無法載入。 這可能發生在應用程式運行的網路受限且 CRL 位置不在允許清單上時。
也有可能延遲檢查 CRL 會影響應用程式的運作能力。
你可以透過以下方式之一設定 System.Windows.Forms.ServicePointManagerCheckCrl 應用程式的選項來選擇退出此行為:
在 [app].runtimeconfig.json 設定檔中設定屬性為
false:{ "configProperties": { "System.Windows.Forms.ServicePointManagerCheckCrl": false } }在專案檔案中新增
<RuntimeHostConfigurationOption>一個項目以停用它:<ItemGroup> <RuntimeHostConfigurationOption Include="System.Windows.Forms.ServicePointManagerCheckCrl" Value="false" /> </ItemGroup>