ImageTools for Silverlight을 사용하여 Canvas
을 PNG 이미지로 저장하는 Silverlight 5 응용 프로그램이 있습니다.Dispatcher.BeginInvoke가 완료되면 어떻게 결정합니까?
if (saveFileDialog.ShowDialog() == true)
{
var stream = saveFileDialog.OpenFile();
writeableBitmap.Dispatcher.BeginInvoke(delegate
{
ExtendedImage extendedImage = writeableBitmap.ToImage();
new PngEncoder().Encode(extendedImage, stream);
});
}
문제는 캔버스가 매우 큰 경우는 코드에 대한 눈에 띄는 시간이 걸릴 수 있다는 것입니다 : 나는 UI 스레드에 Canvas
작업을 필요로 작동하는 다음과 같은 코드를 가지고 이해 완료하려면 BeginInvoke
. 이것은 UI 스레드에서 실행 중이기 때문에 브라우저 창이 실행되는 동안 동결됩니다.
사용자가 내 보낸 이미지를 저장할 위치를 선택하면 사용자에게 "기다려주십시오 ..."라고 말한 자식 창을 팝업으로 표시 한 다음 위에 게시 한 이미지 저장 코드를 실행하고 이후 자동으로 자식 창을 숨기지 만, 그 일을 성취하는 데별로 행운이 없습니다.
BeginInvoke 코드는 비동기 적으로 실행되므로 완료되면 어떻게 알 수 있습니까?