示例A:-这会导致应用崩溃。
DispatchQueue.main.async {
let url = URL(string: imageUrl)
do {
let data = try Data(contentsOf: url!)
DispatchQueue.main.sync {
self.imageIcon.image = UIImage(data: data)
}
}
范例B:-但事实并非如此
DispatchQueue.global().async {
let url = URL(string: imageUrl)
do {
let data = try Data(contentsOf: url!)
DispatchQueue.main.sync {
self.imageIcon.image = UIImage(data: data)
}
}
据我所知
任务1:-为什么在后台线程(即main.async)中执行任务时,我的应用程序崩溃了,而不是调用主线程来更新UI。
任务2:-main.async和global()。async是否有任何区别。
简单来说,我得出的结论是-
DispatchQueue.main.async
-这意味着使用后台线程(不阻止UI)在主队列中执行任务,并且在任务完成时自动将其更新为UI,因为它已经在主队列中。
DispatchQueue.global()。async和global()。sync
这意味着使用后台线程在Global Queue中执行任务,并且当任务完成时,而不是 global()。sync的 使用将工作从
globalQueue转移到mainQueue ,然后更新到UI。
我的应用崩溃的原因
我试图使用(main.sync)将完成的任务带到MainQueue,但是它已经在MainQueue上,因为我没有切换队列,并且此
创建DeadLock (MainQueue等待自身)导致我的应用程序崩溃
有人能更多地说明这个话题吗?具体地说,我正在寻找一个示例,说明服务器的servlet3.0实现如何可以是异步的,但在线程上阻塞?我想,如果我理解了这一点,就更容易理解Servlet3.1中的非阻塞I/O试图解决的确切问题。
问题内容: 我有一个循环 该有回调到另一个功能。 如我所见,它们不会同步执行。在函数中的回调完成之前,循环将继续执行其他项。 如何让循环等到迭代完成(包括回调)? 问题答案: 假设接受回调,我们可以使用它来实现。
我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?
本文向大家介绍简介Android 中的AsyncTask,包括了简介Android 中的AsyncTask的使用技巧和注意事项,需要的朋友参考一下 AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文我会讲AsyncTask会引起哪些问题,如何修复这些问题,并且关于AsyncTask的一些替代方案。 Async
问题内容: 在ASP.net AJAX项目(WebForms)中, 我有一个UpdatePanel,在UpdatePanel中,我有多个带有UpdatePanels的嵌套控件,基本上,我有控件树。父控件非常巨大,并且是站点中非常重要的部分,我无法触摸它(并且它在很多地方都可以重复使用),UpdatePanel应该保持在当前位置。 更新面板中的子控件具有相互隔离的功能(它们也由UpdatePanel
问题内容: 我对android中这种简单的经常发生的情况有疑问。 我们有一个main活动,我们调用一个AsyncTask以及mainactivity的引用,以便AsyncTask可以更新MainActivity上的视图。 我将把事件分解成几个步骤 MainActivity创建一个AyncTask,并将其引用传递给它。 AysncTask,开始工作,例如下载十个文件 用户更改了设备的方向。这将导致A
我有一个带有复选框的列表视图。对于每个复选框(大约有3个),它都有一个特定的AsyncTask。 我从来不知道用户选择了什么复选框,所以我不能把AlertDialog放在异步任务的末尾,因为我从来不知道用户是只选择了一个复选框,还是两个或三个。 因为AsyncTask是分步执行的(只有当第一个Async任务完成时,第二个Async任务才开始),所以我考虑在所有任务的末尾添加一个带有AlertDia
本文向大家介绍JavaScript中的await/async的作用和用法,包括了JavaScript中的await/async的作用和用法的使用技巧和注意事项,需要的朋友参考一下 await/async 是 ES7 最重要特性之一,它是目前为止 JS 最佳的异步解决方案了。虽然没有在 ES2016 中录入,但很快就到来,目前已经在 ES-Next Stage 4 阶段。 直接上例子,比如我们需要按