- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当用户单击按钮时,我使用ThreadPool.QueueUserWorkItem
生成了一个启动长时间运行的线程的线程。我想在线程完成时使按钮可见,以便用户可以单击它。ThreadPool
中是否有已完成的事件
我想做什么?
其中一个页面上有一个按钮,单击该按钮将连接到WS,并启动一个长时间运行的过程来创建文件。在处理期间,我想向用户显示进度条。处理完成后,我想提供一个指向所创建文件的链接。许多用户将同时单击按钮来创建不同的文件。我想您将其称为可以使用异步方法实现的单个请求吗?
关于异步页面的快速问答:
MyBeginMethod
在Page Load上启动了,如果我想在单击按钮时启动异步过程,相同的代码段对我有用吗?
MyBeginMethod
和MyEndMethod
方法访问UI控件(以便使下载文件按钮在过程完成时可见)吗?还是由其他线程拥有这些控件?最佳答案
没有。
您必须将已完成的事实存储在ASP.NET页面可用的位置以及执行工作的方法(例如HttpCache)中。
如果这一切都在单个请求中发生,请跳过线程池并 check out asynchronous pages.
首先,如果文件是按用户创建的,则长时间运行操作的结果应存储在 session 中,而不是缓存中。缓存在用户之间共享,并且 session 是按用户的。
长时间运行的任务可以创建文件,然后在该用户的 session 中存储文件路径。每当用户发送对该文件的另一个请求时,都会在 session 中检查该文件。
在此期间,UI有一些选项。一种是通过回发到服务器,另一种是通过ajax调用。
即使有很多框架(如jQuery),并且网上有很多有关如何进行异步回发的信息,Ajax可能也不是最简单的。如果该过程很长,用户可能会浏览等等,从而使您的任务难以实现。
另一种选择是提出您的文件请求,然后重定向到保留页面。该保留页面具有一个脚本,该脚本每X秒自动刷新一次。它向用户显示诸如“请稍候,正在创建文件”之类的通知。每次此页面回发到服务器时,都会检查文件的存在。如果尚未准备好,则返回到保留页面。最终,文件准备就绪,您可以将用户重定向到下载/显示/以任何方式下载文件的另一个页面。
第二个选项可能对您来说更容易,更直接地实现。这是伪代码:
关于.net - ThreadPool.QueueUserWorkItem完成事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1738707/
我在我的应用程序中使用 Windows ThreadPools,每次调用 CreateThreadPoolWork() 时都会遇到 136 字节的内存泄漏,如通过 UMDH 所见: + 1257728
摘自对我之前一个问题的回答( Task.Factory.StartNew starts with a great delay despite having available threads in t
这有什么区别?请引用选项1和选项2。因为我遇到了麻烦,因为它们好像是一样的。它们运行正确 Thread ThreadPoolExecutor executor = (ThreadPoolExecuto
Windows Phone 8 SDK 文档没有描述 Windows.System.Threading.ThreadPool 之间的区别。和 System.Threading.ThreadPool .
我无法通过JSP使用Elasticsearch Java API。在下面,我试图解释我所做的事情。 :| 我已经按照 flex 指令在系统上安装了elasticseach 2.3.3,并在命令提示符下
我试图在 Thread 的帮助下找出控制台应用程序中运行的线程数: new Thread(() => { while (true) {
我们对来自 Android 应用程序的所有网络流量使用 Retrofit/OkHttp3。到目前为止,一切似乎都很顺利。 但是,我们现在偶尔会遇到我们的应用程序/进程用完文件句柄的情况。 Androi
我们应该为长时间运行的线程使用线程池还是启动我们自己的线程?有什么设计模式吗? 最佳答案 不幸的是,这取决于。没有硬性规定说您应该始终使用线程池。 线程池提供两个主要功能: 线程的委托(delegat
简介 上文提到,创建线程在操作系统层面有4大无法避免的开销。因此复用线程明显是一个更优的策略,切降低了使用线程的门槛,提高程序员的下限。 .NET Core线程池日新月异,不同版本实现都有差别,在
我只是实现了一个线程池,如这里所述 Allen Bauer on thread pools 非常简单的实现,可以正常工作,但是我的应用程序不再关闭。似乎有两个工作线程(和另一个线程,我想是排队线程)卡
我有以下代码: static void Main(string[] args) { Console.Write("Press ENTER to start..."); Console.
我在下面编写了一个示例程序。 class Program { static int x = 2; static void Main(string[] args)
我试图了解Parralel.For和ThreadPool.QueueUserWorkItem之间的区别。 硬件和软件: 英特尔i5(四核) Windows 7 64位教授 DotNet 4.5 案例1
当用户单击按钮时,我使用ThreadPool.QueueUserWorkItem生成了一个启动长时间运行的线程的线程。我想在线程完成时使按钮可见,以便用户可以单击它。 ThreadPool中是否有已完
我想要一个类似的功能: public static V callAsyncAndWait(Func func) { ThreadPool.QueueUserWorkItem(obj =>
我正在尝试编写一个 Java 多线程程序,对作为文件给出的 2 个矩阵执行乘法,并使用有限的线程总数。 例如,如果我将线程数设置为 16,我希望我的线程池能够重用这 16 个线程,直到所有任务完成。
我有一个 C# 控制台应用程序,其中有一个线程池。在线程池中会有一个类执行一个连续的方法(直到它运行了一段时间或者知道什么时候停止)。该方法连接到 HttpWebResponse 流并继续读取它。 问
我正在使用 Reflector 仔细阅读 .Net ThreadPool 的一些源代码,当它显示以下内容时: private static bool QueueUserWorkItemHelper(W
每当用户扫描条形码时,我都会触发一个线程。 大多数时候它是一个相当短的运行线程。但有时可能需要很长时间(等待调用 GUI 线程)。 我读到过,为此使用 ThreadPool 可能是个好主意,而不是为每
我有一个场景,我试图通过在可能的情况下在用户实际需要之前预取结果的一些子元素来转变为响应速度更快的 UI。我不清楚如何最好地处理线程,所以我希望有人可以提供一些建议。 场景 有一个搜索表单(.NET
我是一名优秀的程序员,十分优秀!