作者vi000246 (Vi)
看板C_Sharp
标题[问题] 动态新增的form有时候无法呼叫method
时间Tue Oct 25 00:03:37 2016
我在winform程式里有颗按钮
使用者按钮後会弹出新视窗
经由http request取得图片网址後
在新视窗里载入图片跟一颗按钮
按下新视窗里的按钮会触发click事件
也有bind keypress事件
程式码简化如下
https://dotnetfiddle.net/Pa7cy6
呼叫"ImagePopup"是经由thread呼叫的
这样才有辨法多开弹出视窗
有时候按下弹出视窗里的按钮
会出现找不到"buttonDownload_Click"这method的错误讯息
弹出视窗的click跟keypress都无法找到该事件的method
我试过一次开20个弹出视窗也不会有这错误
不知道是不是存档事件跟http request有时会发生卡死现象
想问这种情况该从哪边debug呢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.12.147.150
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1477325021.A.CFC.html
※ 编辑: vi000246 (101.12.147.150), 10/25/2016 00:06:33
※ 编辑: vi000246 (101.12.147.150), 10/25/2016 00:09:35
1F:推 Litfal: 有什麽跨执行续用ShowDialog而不是直接单一执行续用Show的 10/25 02:00
2F:→ Litfal: 理由吗...? 10/25 02:00
3F:→ Litfal: 八成是跨执行续玩UI出的问题 10/25 02:02
4F:→ vi000246: 单执行绪的话一次只能开一个弹出视窗 而弹出视窗出现前 10/25 10:14
5F:→ vi000246: 会有段http request造成短暂冻结 10/25 10:15
6F:→ vi000246: 我是希望多开弹出视窗 让它在背景执行request後再弹出 10/25 10:16
7F:→ Litfal: 单执行续只能开一个视窗?你要不要再看一次推文第一句 10/25 11:03
8F:→ Litfal: 执行耗时工作的非同步是另一回事,不要和UI混在一起。 10/25 11:04
9F:推 Peruheru: ShowDialog一次就一个没错,但Show就没有这限制罗 10/25 11:47
10F:→ Peruheru: 如果你希望它有强迫使用者回应的效果,可以用其他方式 10/25 11:48
11F:→ Peruheru: 但话说回来一次多个要强迫使用者回应,优先度就麻烦了 10/25 11:49
12F:→ Litfal: 他用多执行续开ShowDialog也不会有强制回应的效果,用起 10/25 11:54
13F:→ Litfal: 来跟Show有九成像 10/25 11:54
14F:→ vi000246: 原来还有show能用 感谢 我在试试看 10/25 16:09
15F:→ vi000246: 没仔细看第一行推文 拍谢 10/25 16:10
16F:→ vi000246: 改用show视窗会闪一下就关掉 而且弹出前会定格不能动作 10/25 20:23
17F:→ vi000246: 我这个不需要强制回应 跟主视窗是独立不相关的 10/25 20:24
18F:→ Litfal: 闪一下关掉是因为你还是用using包着吧,耗时工作用多续 10/25 23:31
19F:→ vi000246: 谢谢楼上大大 我明天再研究看看 10/26 00:09
21F:→ vi000246: 用show的话UI会在 new GetPreViewImage().CallImageHand 10/26 11:07
22F:→ vi000246: erdle(url);这里block住 10/26 11:07
23F:→ vi000246: 是不是只能用thread才能让这视窗背景执行不会block UI呢 10/26 11:08
24F:→ Litfal: 耗时工作要用多执行续阿,举个例,你下载图片需要5秒,那 10/26 12:25
25F:→ Litfal: 你就该把下载派给另一个执行续去做,下载完通知UI执行续叫 10/26 12:25
26F:→ Litfal: 它显示。而不是把UI和下载的工作都指派给另一条执行续。 10/26 12:26
27F:→ vi000246: 我的架构可能要重写了 谢谢 我再想想看 10/26 13:06
28F:→ vi000246: 我用BackbroundWorker的completed事件处理弹出视窗就成 10/26 17:17
29F:→ vi000246: 功了 感谢各位指导 10/26 17:17