【发布时间】:2018-07-14 02:25:23
【问题描述】:
我有一个问题。在一个表单中,我在一个单独的类的线程中调用函数:
public partial class mainForm : Form
{
private void button_Click(object sender, EventArgs e)
{
myclass myc = new myclass();
Thread mythread = new Thread(myc.mainfunction);
mythread.name ="A";
mythread.Start();
}
}
在这个函数中,线程“A”中的“mainfunction”在同一类的函数上生成了一个附加线程。
现在这个子线程应该访问同一个类的父线程“A”的一个函数。
我知道这如何与表单中的委托一起访问控件。但在这种情况下不是。谁能帮帮我?
class myclass
{
public void mainfunction ()
{
...
myclass submc = new myclass();
Thread subthread = new Thread(new ParameterizedThreadStart(submc.subfunction));
mythread.name ="B";
subthread.Start(this);
}
public void subfunction(object parm)
{
myclass parentc = (myclass)parm;
parentc.doanything()
}
public void doanything()
{
...
// this should happen in Thread A NOT B
}
}
提前致谢。
干杯
【问题讨论】:
-
线程 A 将不再存在。它已完成运行并终止。为什么你需要在那个特定的线程上运行一些东西?
-
嗨,哦,是的。不知何故,我没有得到它。线程已完成...所以原因是“doanything()”方法中的 tableadapter 更新。我有时会收到 System.Data.OleDb.OleDbException 并且不知道为什么会发生这种情况。想要将表格上的更新整合到一个线程中。
标签: c# .net multithreading delegates invoke