【发布时间】:2009-11-15 20:26:24
【问题描述】:
当用户单击按钮时,我使用ThreadPool.QueueUserWorkItem 生成一个线程,该线程启动一个长时间运行的进程。我想在线程完成后使一个按钮可见,以便用户可以单击它。
ThreadPool有没有完成的活动
我想做什么?
其中一个页面在单击时有一个按钮连接到一个 WS 并启动一个创建文件的长时间运行的进程。在处理期间,我想向用户显示一个进度条。处理完成后,我想提供一个指向已创建文件的链接。许多用户会同时单击创建不同文件的按钮。我猜你会称之为可以使用异步方法实现的单个请求?
关于异步页面的快速问答:
-
MSDN 链接代码如下:
AddOnPreRenderCompleteAsync ( 新的 BeginEventHandler(MyBeginMethod), 新的 EndEventHandler (MyEndMethod) );
看来MyBeginMethod 是在页面加载时启动的,如果我想在单击按钮时启动异步进程,相同的代码 sn-p 对我有用吗?
- 我能否在
MyBeginMethod和MyEndMethod方法中访问 UI 控件(以便在进程完成时显示下载文件按钮?或者其他线程是否拥有这些控件?
【问题讨论】:
-
更新了答案。另外,我会跳过异步页面。对于新开发人员来说,异步页面模式非常令人困惑(我已经六年了,它仍然让我感到困惑!)。检查我的答案以获得好的解决方案。
标签: .net asp.net multithreading