[问题] 动态新增的form有时候无法呼叫method

楼主: vi000246 (Vi)   2016-10-25 00:03:37
我在winform程式里有颗按钮
使用者按钮后会弹出新视窗
经由http request取得图片网址后
在新视窗里加载图片跟一颗按钮
按下新视窗里的按钮会触发click事件
也有bind keypress事件
程式码简化如下
https://dotnetfiddle.net/Pa7cy6
呼叫"ImagePopup"是经由thread呼叫的
这样才有辨法多开弹出视窗
有时候按下弹出视窗里的按钮
会出现找不到"buttonDownload_Click"这method的错误讯息
弹出视窗的click跟keypress都无法找到该事件的method
我试过一次开20个弹出视窗也不会有这错误
不知道是不是存盘事件跟http request有时会发生卡死现象
想问这种情况该从哪边debug呢
作者: Litfal (Litfal)   2016-10-25 02:00:00
有什么跨执行续用ShowDialog而不是直接单一执行续用Show的理由吗...?八成是跨执行续玩UI出的问题
楼主: vi000246 (Vi)   2016-10-25 10:14:00
单执行绪的话一次只能开一个弹出视窗 而弹出视窗出现前会有段http request造成短暂冻结我是希望多开弹出视窗 让它在背景执行request后再弹出
作者: Litfal (Litfal)   2016-10-25 11:03:00
单执行续只能开一个视窗?你要不要再看一次推文第一句执行耗时工作的异步是另一回事,不要和UI混在一起。
作者: Peruheru (还在想)   2016-10-25 11:47:00
ShowDialog一次就一个没错,但Show就没有这限制囉如果你希望它有强迫使用者回应的效果,可以用其他方式但话说回来一次多个要强迫使用者回应,优先度就麻烦了
作者: Litfal (Litfal)   2016-10-25 11:54:00
他用多执行续开ShowDialog也不会有强制回应的效果,用起来跟Show有九成像
楼主: vi000246 (Vi)   2016-10-25 16:09:00
原来还有show能用 感谢 我在试试看没仔细看第一行推文 拍谢改用show视窗会闪一下就关掉 而且弹出前会定格不能动作我这个不需要强制回应 跟主视窗是独立不相关的
作者: Litfal (Litfal)   2016-10-25 23:31:00
闪一下关掉是因为你还是用using包著吧,耗时工作用多续
楼主: vi000246 (Vi)   2016-10-26 00:09:00
谢谢楼上大大 我明天再研究看看
作者: Litfal (Litfal)   2016-10-26 12:25:00
耗时工作要用多执行续阿,举个例,你下载图片需要5秒,那你就该把下载派给另一个执行续去做,下载完通知UI执行续叫它显示。而不是把UI和下载的工作都指派给另一条执行续。
楼主: vi000246 (Vi)   2016-10-26 13:06:00
我的架构可能要重写了 谢谢 我再想想看我用BackbroundWorker的completed事件处理弹出视窗就成功了 感谢各位指导

Links booklink

Contact Us: admin [ a t ] ucptt.com