Lock image interactions, fix dispose

This commit is contained in:
Jaex 2015-06-27 17:01:22 +03:00
parent 370c758b12
commit 83c730b2d6
4 changed files with 45 additions and 24 deletions

View file

@ -103,11 +103,11 @@ protected override void Dispose(bool disposing)
if (disposing && (components != null))
{
components.Dispose();
}
if (screenshot != null)
{
screenshot.Dispose();
}
if (screenshot != null)
{
screenshot.Dispose();
}
base.Dispose(disposing);

View file

@ -82,6 +82,7 @@ private void GetWebpageBitmap()
{
GetImage(webBrowser.ActiveXInstance, bmp, Color.White);
OnCaptureCompleted(bmp);
return;
}
catch (Exception ex)
{
@ -91,10 +92,10 @@ private void GetWebpageBitmap()
{
bmp.Dispose();
}
OnCaptureCompleted(null);
}
}
OnCaptureCompleted(null);
}
private static void GetImage(object obj, Image destination, Color backgroundColor)

View file

@ -16,11 +16,11 @@ protected override void Dispose(bool disposing)
if (disposing && (components != null))
{
components.Dispose();
}
if (webpageCapture != null)
{
webpageCapture.Dispose();
}
if (webpageCapture != null)
{
webpageCapture.Dispose();
}
base.Dispose(disposing);

View file

@ -89,17 +89,6 @@ private void CleanPictureBox()
}
}
private void webpageCapture_CaptureCompleted(Bitmap bmp)
{
if (!IsDisposed)
{
CleanPictureBox();
pbResult.Image = bmp;
btnCapture.Enabled = txtURL.Enabled = btnUpload.Enabled = btnCopy.Enabled = true;
IsBusy = false;
}
}
private void txtURL_TextChanged(object sender, EventArgs e)
{
btnCapture.Enabled = txtURL.TextLength > 0;
@ -124,17 +113,42 @@ private void btnCapture_Click(object sender, EventArgs e)
{
IsBusy = true;
btnCapture.Enabled = txtURL.Enabled = btnUpload.Enabled = btnCopy.Enabled = false;
CleanPictureBox();
lock (this)
{
CleanPictureBox();
}
webpageCapture.CaptureDelay = (int)nudCaptureDelay.Value * 1000;
webpageCapture.CapturePage(txtURL.Text, new Size((int)nudWebpageWidth.Value, (int)nudWebpageWidth.Value));
}
private void webpageCapture_CaptureCompleted(Bitmap bmp)
{
if (!IsDisposed)
{
lock (this)
{
CleanPictureBox();
pbResult.Image = bmp;
}
btnCapture.Enabled = txtURL.Enabled = btnUpload.Enabled = btnCopy.Enabled = true;
IsBusy = false;
}
}
private void btnUpload_Click(object sender, EventArgs e)
{
if (pbResult.Image != null)
{
Image img = (Image)pbResult.Image.Clone();
Image img;
lock (this)
{
img = (Image)pbResult.Image.Clone();
}
OnImageUploadRequested(img);
}
}
@ -143,7 +157,13 @@ private void btnCopy_Click(object sender, EventArgs e)
{
if (pbResult.Image != null)
{
Image img = (Image)pbResult.Image.Clone();
Image img;
lock (this)
{
img = (Image)pbResult.Image.Clone();
}
OnImageCopyRequested(img);
}
}