问题标签 [background-thread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 从后台线程返回后代码不起作用
我有一个表格视图(文件名-five.m),它可以正常工作并在表格视图中正确显示数据。当用户选择一行时,它会添加一个在同一屏幕上显示进度指示器的子视图。添加子视图后,它会启动一个后台线程,该线程解析 HTML 数据并将其添加到 SQLite3 数据库中。后台线程、SQLite 数据插入、HTML 解析都工作正常。现在,当它完成时,它会在 removeProgressInd 方法中返回到五.m,该方法会删除进度指示器并导航到新的表视图(文件名 - TitleOnly.m)。它成功返回,因为我可以从 removeProgressInd 方法中看到所有 NSLog 消息。但是代码不会停止进度指示器,也不会移动到新的表格视图。代码运行没有任何错误。我尝试在 viewDidLoad 和 viewDidAppear 而不是 removeProgressInd 中运行相同的代码,但我只看到 NSLog 消息。这是我的代码。
五.m - tableview DidSelelectRow
ParsingCalculation.m 文件代码
五.m - removeProgressInd 方法
我可以在控制台中看到“导航到 TitleOnly”消息而没有任何错误,这意味着它成功运行 [progressInd stopAnimating] 和 [self.progressInd removeFromSuperview] 命令而没有任何错误,因为这些命令就在此 NSLog 消息之前。但它不会从屏幕上删除进度指示器。同样,它不显示 TitleOnly 表格视图。''
我该如何解决?问题出在哪里?我究竟做错了什么?
请尽可能尽快回复。
java - 如何在 Swing 加载构建 GUI 时更新/绘制 JProgressBar
我有一个 GUI,在它运行的平台上构建/初始化非常繁重..因此我想在它初始化时更新进度..
我有一个未装饰的小型 JDialog,其中包含一个 JLabel 和一个 JProgressBar,我想在初始化期间在特定位置进行更新,但是,因为事件调度 thead(根据 Swing 规则)用于构建/初始化 GUI,所以进度当然是直到 EDT 再次空闲(即初始化完成)才更新。
我已经使用“paintImmediately”重绘了 JProgressBar,但我似乎无法让它对 JLabel 和对话框本身正常工作。有没有什么简单的推荐/经过验证的方法来完成这个?
干杯...
编辑:添加一个我正在尝试做的例子;当然,大大简化了。
只要 EDT 很忙,由上面调用progressBar.setValue()
/引起的重绘当然会排队,并在我们全部完成后导致重绘,而不是一路更新..progressLabel.setText()
asp.net - 从后台线程绑定 GridView
我已经构建了一个报告函数,它将在将最终查询绑定到 a 之前调用几个存储过程,然后在页面上显示结果之前在事件GridView
中有几个进程。GridView_DataBound
整个过程最多可能需要 1 分钟才能完成。
而不是用户必须在响应之前等待这么长时间,有没有办法我可以在后台线程中运行这个脚本,然后使用 AJAX 以某种方式绑定?
android - 在后台线程中更新光标
我有一个与此讨论中描述的问题类似的问题:当底层数据库更改时,我需要刷新 ListView,但是查询很昂贵,所以我在 AsyncTask 中进行。
这是更新的光标准备好后我所做的。(这也是列表最初在启动时填充的方式。)
这是我得到的错误。它不会每次都发生,这更令人沮丧。
所以,我显然没有正确关闭光标。如果我调用currentCursor.close()
而不是依赖传出的 Cursor 被 关闭adapter.changeCursor()
,那么我会收到关于关闭 Cursor 两次或关闭 Cursor 的警告null
。
这样做的正确方法是什么?
在我链接到的讨论中,Dianne Hackborn 建议使用 aLoader
代替。这不是我的选择,因为我的代码必须在 Android 2.1 上运行。
c - UI + Worker 多线程问题
我无法在后台执行搜索操作,并在列表框内的前台向用户显示结果。
该程序用于SendMessage
将查询结果发送回 GUI。
当程序关闭时,GUI 将全局(易失性)变量标记为“已完成”,并用于MsgWaitForMultipleObjects
等待线程句柄,加入线程。
当我中断程序时,我看到一个死锁:GUI 正在等待后台线程终止,而后台线程正在等待SendMessage
。
当我使用 100 毫秒超时MsgWaitForMultipleObjects
并在循环中调用它时,仍然会发生这种死锁,其中QS_ALLINPUT
. 我不知道为什么。
这种设计是否正确?有没有更好的方法来等待线程终止?
如果不是,那是什么问题?
iphone - iPhone后台线程中的模态警报
在我的 iPhone 应用程序中,主线程创建了一个后台线程,它做了很多工作,在某些情况下需要询问用户他们的决定。当用户被问到问题时,后台线程应该停止工作,只有在用户回答问题后才能继续。
最好的方法是什么?
PS
我试过 iPhone Developer's Cookbook 中的 ModalAlert,据说可以解决问题,但我没有成功。似乎 CFRunLoopRun (应该停止线程执行)只是不会停止后台线程。
我有这样的代码
并且在线程NSLog
启动后立即执行。syncStart
奇怪的。
c# - 将一些工作移至后台线程的最简单方法是什么?
假设我有这段代码。
我想转到string result = TimeConsumingTask(value);
一些后台线程。如果将其移至后台线程的最简单但有效的方法是什么
android - Android:使用多线程使 UI 响应式(归档平滑滚动)
我的活动是下载和显示公告(来自公告网络服务)。为了保持 UI 响应,我在后台线程中执行以下操作:
1)上传XML(数据存储在XML中),
2)处理XML,
3)上传图片。
此外,我更改了 UI 和后台线程的优先级以保持 UI 线程响应:
在主线程中:
在后台线程中:
每个公告都放入一个 TableRow 中,每个 TableRow 都使用处理程序放入 TableView 中。当用户滚动 TableView 并即将到达表的末尾时,会添加新行并发送用于下一个公告的 HTTP-GET(+ 解析(使用 XPath)+ 图像上传 + 用内容填充表行)。
我的问题:
当上传和解析正在进行时,用户界面只是部分响应(当用户滚动 TableView 时,每个延迟有 0.1-0.5 秒)。
我想进行不依赖于数据上传/处理的绝对平滑滚动。
以错误的方式做了什么,还有什么可以在这里做的?例如,如果我减少处理程序中的操作数量,它应该会提高响应能力......也许就是这样。但是,我在那里没有看到繁重且耗费资源的指令。
更新
我使用 ListView 而不是 TableLayout 重写了我的代码,因为前者要快得多(事实证明,我不知道)。但是当 XML 处理和 ListView 滚动同时进行时,我仍然会遇到峰值。我做了2个实验:
1)我删除了所有后台进程 - 向下滚动时将新行添加到 ListView 中,但没有为这些行处理任何数据(因此它们保持为空) - 这种变体效果很好,没有任何尖峰,UI 绝对响应。
2)第二个实验是删除对 ListView 更新的调用(处理了 XML 文件,但找到的数据没有传递给 ListView 适配器)——那时我遇到了峰值。所以我得出结论,这些峰值是由于后台线程造成的,而不是由于 UI 更新调用。如果我让后台线程的优先级低于主线程的优先级,后台线程如何减慢我的应用程序的速度?
是
设置线程优先级的正确方法?
objective-c - 在iphone上通过ftp在后台上传文件
我正在尝试在应用程序中建立 FTP 连接。我想将几个文件上传到 FTP 服务器,所有文件都在一个目录中。所以首先我想创建远程目录。
此代码在使用以下调用在后台线程中执行时不起作用:
我的猜测是(后台线程)运行循环没有运行?如果我在主线程内发送消息,则上传工作正常:
由于主线程的运行循环已启动并正在运行。
但是要上传相当大的文件;所以我想把这个工作量放在后台线程中。但是我如何以及在哪里设置 NSRunLoop,以便整个上传发生在后台线程中?苹果关于 NSRunLoops 的文档(尤其是如何在不使用计时器/输入源的情况下启动它们,如本例)并没有帮助我。
android - android 中的 twitter 应用程序如何能够“几乎”实时更新
我最近在基于 Android 的手机上尝试了 twitter 应用程序(HTC HD Desire,我是客人)。使用 twitter 应用程序,当我尝试“发送”一条消息时,我手机上的 twitter 应用程序几乎实时通知更改。
我做了一些搜索,发现我可以从 Twitter 以 JSON 格式获取“消息”,但确实如此,我在 android 手机上的应用程序必须在后台运行一个单独的线程才能以某种格式从服务器获取信息(比如JSON ..)而不是在手机上更新我的墙?
如果这真的发生了,我认为这对我的手机来说将是一场灾难,因为它应该很快就会耗尽电池。
无论如何都可以获得相同的结果,但没有在后台运行线程来进行检查更新工作?