Загрузка изображения с удаленной машины в потоке - C#
Формулировка задачи:
Доброго времени суток! Я загружаю с удаленного компьютера нужное мне изображение в потоке и временами программа подвисает на этапе загрузки изображения. Подскажите пожалуйста в чем моя ошибка:
private void GridClickNod()
{
try
{
var thread =
new Thread(() =>
NewLoad2(GlobalStaticValues.SelectedNameTable,
_ctn.FromDataBase(grid.Rows[grid.CurrentRow.Index].Cells[0].Value.ToString()), 0));
thread.Start();
}
catch (Exception)
{
}
}
private Image _image2;
private delegate void NLoad2(string nameTable, string rowName, int numImg);
public void NewLoad2(string nameTable, string rowName, int numImg)
{
if (picture.InvokeRequired)
{
NLoad2 d = NewLoad2;
Invoke(d, new object[] { nameTable, rowName, numImg });
}
else
{
try
{
if (_image2 != null)
{
_image2.Dispose();
}
grid.Cursor = Cursors.WaitCursor;
tree.Cursor = Cursors.WaitCursor;
var dir = Directory.GetFiles(GlobalStaticValues.ServName + nameTable + @"\" + rowName + @"\img\");
_image2 = new Bitmap(dir[numImg]);
if (picture != null)
{
picture.Image = _image2;
}
grid.Cursor = Cursors.Default;
tree.Cursor = Cursors.Default;
}
catch (Exception)
{
}
}
}Решение задачи: «Загрузка изображения с удаленной машины в потоке»
textual
Листинг программы
public void NewLoad2(string nameTable, string rowName, int numImg)
{
try
{
if (_image2 != null)
{
_image2.Dispose();
}
grid.Cursor = Cursors.WaitCursor;
tree.Cursor = Cursors.WaitCursor;
var dir = Directory.GetFiles(GlobalStaticValues.ServName + nameTable + @"\" + rowName + @"\img\");
_image2 = new Bitmap(dir[numImg]);
if (picture != null)
{
if (picture.InvokeRequired)
{
picture.Invoke(new Action( () => picture.Image = _image2));
}
}
grid.Cursor = Cursors.Default;
tree.Cursor = Cursors.Default;
}
catch (Exception)
{
}
}