Witam mam taki oto kod:
private void otworzKatalogToolStripMenuItem_Click(object sender, EventArgs e)
{
List<string> path = new List<string>();
string[] extension;
string folder;
this.formcheck = new ModalExtensionChooseForm();
this.formcheck.ShowDialog();
if (this.formcheck.DialogResult == DialogResult.OK)
{
extension = this.formcheck.extension.ToArray();
this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
this.folderBrowserDialog1.ShowNewFolderButton = false;
this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.MyComputer;
DialogResult result = this.folderBrowserDialog1.ShowDialog();
folder = folderBrowserDialog1.SelectedPath;
if (result == DialogResult.OK)
{
foreach (string ext in extension)
{
foreach (string file in System.IO.Directory.GetFiles(folder, ext))
{
path.Add(file);
}
}
int PictX = 10;
int PictY = 50;
int CheckX = 10;
int CheckY = 30;
int thumbX = 150;
int thumbY = 150;
float elementForRows = this.Width / thumbX;
elementForRows = Convert.ToInt32(Math.Round(elementForRows));
for (int i = 0; i < path.Count; i++)
{
string prevImage, nextImage;
////////
//tutaj chcialbym miec okno z progressbar'em lub napisem
///////
if ((i + 1) < path.Count)
nextImage = path[i + 1];
else
nextImage = path[0];
if ((i - 1) > 0)
prevImage = path[i - 1];
else
prevImage = path[path.Count - 1];
PictureBox pictureBox = new PictureBox();
CheckBox checkbox = new CheckBox();
checkbox.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
checkbox.Location = new System.Drawing.Point(CheckX, CheckY);
checkbox.Size = new System.Drawing.Size(thumbX, 20);
checkbox.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
checkbox.Text = "Usun obraz";
checkbox.Tag = Convert.ToString(path[i]);
checkbox.CheckedChanged += new EventHandler(checkbox_CheckedChanged);
pictureBox.Cursor = System.Windows.Forms.Cursors.Hand;
pictureBox.Location = new System.Drawing.Point(PictX, PictY);
pictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox.Size = new System.Drawing.Size(thumbX, thumbY);
pictureBox.Tag = path[i].ToString() + ";" + prevImage + ";" + nextImage;
using (System.IO.FileStream fs = new System.IO.FileStream(path[i].ToString(), System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
pictureBox.Image = System.Drawing.Image.FromStream(fs);
}
pictureBox.Click += new EventHandler(this.pictureBox_Click);
this.Controls.Add(pictureBox);
this.Controls.Add(checkbox);
if ((i + 1) % elementForRows == 0)
{
PictX = 10;
PictY += 180;
CheckX = 10;
CheckY += 180;
}
else
{
PictX += 160;
CheckX += 160;
}
}
}
this.formcheck.Dispose();
}
}
Chcialbym zeby w momencie wczytywania zdjec pojawilo mi sie okno modalne lub nie z progressbar'em lub napisem ze wczytuje zdjecie i jak tylko wczytywanie zdjec sie zakonczy to te okno ma zniknac...zaden problem...nie chce uzywam backgroundworker'a, chce sie nauczyc korzystac z watkow w C#...
Problem polega na tym ze nie wiem jak spowodowac by wiedziec kiedy wczytywanie zdjec sie zakonczy i wtedy wstrzymac watek za pomoca:
watek.Abort();
Albo po prostu sprawdzic czy iterator czyli zmienna "i" z petli for doszla juz do wczytywania ostatnie zdj czyli if(i == (path.count - 1)) i potem zatrzymac watek...
Czy ktos moze mi zrobic prosty zarys jak to powinno wygladac?