0
我有一個Silverlight 5應用程序,它使用ImageTools for Silverlight將Canvas
保存爲PNG圖像。我知道我需要在UI線程上與Canvas
工作,有下面的代碼,它的工作原理:如何確定Dispatcher.BeginInvoke何時完成?
if (saveFileDialog.ShowDialog() == true)
{
var stream = saveFileDialog.OpenFile();
writeableBitmap.Dispatcher.BeginInvoke(delegate
{
ExtendedImage extendedImage = writeableBitmap.ToImage();
new PngEncoder().Encode(extendedImage, stream);
});
}
的問題是,如果畫布是非常大的,它可以採取顯着的時間代碼BeginInvoke
來完成。由於這是在UI線程上運行的,因此它在執行期間會凍結瀏覽器窗口。
當用戶選擇保存導出圖像的位置後,我想彈出一些子窗口,告訴用戶「Please wait ...」,然後運行上面貼出的圖像保存代碼,以及之後自動隱藏子窗口,但是我沒有太多的運氣來完成這個。
對於初學者來說,BeginInvoke代碼異步運行,所以如何知道它何時完成?