Ai xem giúp em đoạn code này, có lẽ em dùng multithread không hợp lý
Em chỉ biết vấn đề lỗi nằm ở đây, mà không biết cách sửa
if (this.InvokeRequired)
{
this.Invoke(new dlgAddItemN(CayThuMuc), sDiaChi);
}
else
{
// .......
}


còn đây là đoạn hoàn chỉnh
#region Xử lý Cross Thread
private delegate void dlgAddItemN(string n);
void CayThuMuc(string sDiaChi)
{
if (this.InvokeRequired)
{
this.Invoke(new dlgAddItemN(CayThuMuc), sDiaChi);
}
else
{
string[] DriveList = Directory.GetDirectories(sDiaChi);
string[] DriveList2 = Directory.GetFiles(sDiaChi);
string strExtension;
for (int j = 0; j < DriveList2.Length; j++)
{

File.SetAttributes(DriveList2[j], FileAttributes.Normal);

if (checkBox2.Checked == true)
{
strExtension = Path.GetExtension(DriveList2[j]);

if (strExtension.Substring(strExtension.Length - 3, 3).ToLower() == "lnk")
File.Delete(DriveList2[j]);

}

}
for (int i = 0; i < DriveList.Length; i++)
{
string name = DriveList[i].Substring(DriveList[i].LastIndexOf("\\") + 1);
switch (name)
{
case "System Volume Information":
case "con":
break;
default:
{

File.SetAttributes(DriveList[i], FileAttributes.Normal);
labelX1.Text = DriveList[i];
CayThuMuc(DriveList[i]);

} break;
}


}
}
}

#endregion

private void button6_Click(object sender, EventArgs e)
{

if (checkBox1.Checked == true)
{
Directory.CreateDirectory(tex
textBox1.Text + @"\1192fxs");
ThreadStart ts1 = new ThreadStart(CrossThread);
Thread tA = new Thread(ts1);
tA.Start();
Directory.Delete(textBox1.Text + @"\1192fxs");
}
}

private void CrossThread()
{
CayThuMuc(textBox1.Text);
}