thread C# windows form
у меня есть форма, на ней проигрывается видео, и есть check box нажимая на который с видео должны начать сохраняться кадры в виде фото. Проблема в том что в потоке используется this, и оно ругается,нельзя передавать в другой поток элемент формы, как исправить эту ошибку? вот поток и в нём код который сохраняет изображение.
private void checkBox1_Click(object sender, EventArgs e)
{
if (checking == 1)
{
cancel = false;
Task.Run(() =>
{
while (cancel==false)
{
if (!string.IsNullOrEmpty(WMP.URL))
{
//WMP.Ctlcontrols.pause();
System.Drawing.Image ret = null;
try
{
// take picture BEFORE saveFileDialog pops up!!
Bitmap bitmap = new Bitmap(970, 500);
{
Graphics g = Graphics.FromImage(bitmap);
{
Graphics gg = WMP.CreateGraphics();
{
//timerTakePicFromVideo.Start();
this.BringToFront();
g.CopyFromScreen(
WMP.PointToScreen(
new System.Drawing.Point()).X,
WMP.PointToScreen(
new System.Drawing.Point()).Y,
-70, -40,
new System.Drawing.Size(
2349, 551)
);
System.Threading.Thread.Sleep(50);
}
}
// afterwards save bitmap file if user wants to
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ret = System.Drawing.Image.FromStream(ms);
ret.Save(folder + "/img" + number + ".jpg");
number += 1;
}
}
}
catch (Exception ex)
{
Console.WriteLine("error: "+ ex);
}
}
}
}
);
checking = 0;
}
else
{
cancel = true;
checking = 1;
}
}
Ответы (1 шт):
Автор решения: Nikitos kotov
→ Ссылка
Решением был ответ в коментариях, продублирую его сюда что бы было видно.
Invoke((Action)(() => BringToFront()));