//登陆回调函数 当返回值等于4的时候,窗体闪一下,但调用的窗体不出来,这样写调不出吗? |
|
#1 |
呵呵,真是好奇怪啊
|
#2 |
你showdialog试试
|
#3 |
fmPlatform fmp = new fmPlatform();
这是一个临时变量,超出作用范围之后就自动销毁了。 |
#4 |
1.先把代码写进form_load里,看是不是窗体本身的问题,比如窗体代码里执行了hide(),close()之类的
2.如果直接调用能出来,那么再确认你的login_result回调函数到底在哪里执行的,是主线程还是子线程 |
#5 |
回复3楼: fmp是被销毁了,但是窗体不会无缘无故的被销毁 |
#6 |
fmp被销毁的时候会调用窗体的Dispose,这样就会关闭窗体啊!
|
#7 |
回复6楼: 依你的逻辑来说,winform中就不存在非模态窗体了,因为show过之后,窗体就自动销毁 |
#8 |
form1 fm=new form1();中的fm只不过是个变量,引用类型,它指向的是form1的实例
fm即使销毁,也不代表form1的实例也会跟着销毁 |
#9 |
放其他地方是能调出窗体的
|
#10 |
回复2楼:
不行
|
#11 |
Form1 fm1 = new Form1();
Form1 fm2 = fm1; Form1 fm3 = fm2; Form1 fm4 = fm3; fm4.Show(); fm1 = null; 引用类型的变量是否被销毁,跟被引用的对象有直接的关系? |
#12 |
回复9楼: 那么只能找你回调函数的原因了 |
#13 |
回复7楼: 复习一下变量的生命周期吧。一个Object要存活,起码要有个变量引用它。你现在唯一引用它的变量超出作用范围后,这个窗体就变垃圾收集器收集了。 |
#14 |
回复12楼:
对的,那这样该怎么写
|
#15 |
回复13楼: 你应该在主线程里注册回调函数,不要在子线程里注册回调函数. |
40分
#16 |
或者回调函数注册还在子线程注册
但是show窗体的时候使用委托,让主线程打开窗体 而不是子线程里new窗体 |
#17 |
回复15楼:
谢
|
#18 |
App.Current.Dispatcher.Invoke(new Action(() =>
{ fmPlatform fmp = new fmPlatform(); fmp.Show(); })); 试试 |