不明白你说的收到消息是什么, Class A { public void execute() { MessageBox.Show("a"); } } A a = new A(); a.execute(); //messageBox a A b; b = a; b.execute() //messageBox a
详细点的代码... Class A {} ArrayList list; A a; list.add(a); ((A)(list[0]0)).exe(); 就会收到一个消息,测试通过如果 A b; b = (A)(list[0]); b.exe(); 就收不到,觉得很郁闷,如何解释啊?
//状态检测线程执行体,入口 private void Execute() { int dvrCount = 0; DVR dvr; dvrCount = DVR.DVRlist.Count; while (!Terminated) { //((DVR)(DVR.DVRlist[1])).Login(); //手动添加上面代码就会收到DVR.DVRlist[1]注册返回的消息 for (int i = 0; i < dvrCount; i++) { dvr = (DVR)(DVR.DVRlist[i]); if (!dvr.Active && !Terminated) { dvr.Login(); //上面这样则接受不到 } if (dvrCount != DVR.DVRlist.Count) { dvrCount = DVR.DVRlist.Count; break; } } Thread.Sleep(1000); } } protected override void DefWndProc(ref Message m) { switch (m.Msg) { case WM_RECE_MSG: //处理部分 break; default: base.DefWndProc(ref m);///调用基类函数处理非自定义消息。 break; } }
效果是一样的
我测试了一下就是不一样,不知道是不是这个原因?
用a.exe()就可以收到消息,
用b.exe()就没有,好奇怪?
Class A {
public void execute()
{
MessageBox.Show("a");
}
}
A a = new A();
a.execute(); //messageBox a
A b;
b = a;
b.execute() //messageBox a
Class A {}
ArrayList list;
A a;
list.add(a);
((A)(list[0]0)).exe(); 就会收到一个消息,测试通过如果
A b;
b = (A)(list[0]);
b.exe(); 就收不到,觉得很郁闷,如何解释啊?
private void Execute()
{
int dvrCount = 0;
DVR dvr;
dvrCount = DVR.DVRlist.Count; while (!Terminated)
{
//((DVR)(DVR.DVRlist[1])).Login();
//手动添加上面代码就会收到DVR.DVRlist[1]注册返回的消息
for (int i = 0; i < dvrCount; i++)
{
dvr = (DVR)(DVR.DVRlist[i]);
if (!dvr.Active && !Terminated)
{
dvr.Login();
//上面这样则接受不到
} if (dvrCount != DVR.DVRlist.Count)
{
dvrCount = DVR.DVRlist.Count;
break;
} }
Thread.Sleep(1000);
}
}
protected override void DefWndProc(ref Message m)
{
switch (m.Msg)
{
case WM_RECE_MSG:
//处理部分
break;
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}
判断if(!dvr.Active && !Terminated)
出问题