Dear all,
I am having
a very frustrating problem with a project in Visual Studio 2008 C#. I have
tried everything, I have searched everywhere, but it seems that nothing works.
I would appreciate if someone gave me some directions or suggestions, as to
where to look for the solution.
What I want
to do:
I have 2
forms. The MAIN form, runs a heavy image processing algorithm, using a
background worker. The second form, FORM2 must have a progress bar, which will display
the progress of the image processing executed in MAIN form. It must also have a
CANCEL button, which will allow the canceling of the image processing algorithm.
What I have
done so far:
1. I have managed to solve the problem
using only one form: there is no FORM2. The progress bar and the cancel button
are on the MAIN form. Everything works fine. But this is not the thing I have
to do! I really need the cancel button and the progress bar on a different
form.
2. I have managed to show the progress
bar on FORM2 running smoothly, but I cannot interact with FORM2 (the mouse
pointer becomes a hourglass when I hover it over FORM2, thus, I cannot press
the CANCEL or the X button).
In order to do that, I wrote the following code:
In MAIN form:
FORM2 PR = new FORM2();
PR.Show();
for (i = 0; i < imsize_y; i++)
{
//calculate the progress degree and store it in 'Process' variable
PR.progressBar1.Value = Process;
PR.Refresh(); //otherwise the PR form is not redrawn
if (backgroundWorker1.CancellationPending
{
PR.Close();//where the code stops in case cancel is pressed
break;
}
for (j = 0; j < imsize_x; j++)
{
//heavy image processing
}
}
PR.Close();
|
3. I have also tried to use PR.ShowDialog() instead of PR.Show(),in order have focus on FORM2. However, in this case, the image
processing stops until and I have to press something in FORM2 in order to
proceed with the image processing in MAIN form.
I know that this has to do something
with threading, but I don't know what. When the MAIN form runs, I cannot
interact with FORM2. I have found examples where I can communicate variables
between forms, but, in these examples, there is no background worker involved.
I would appreciate any suggestions
or directions, as to where to look for this solution.