问题标签 [ui-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.

0 投票
1 回答
329 浏览

javascript - JavaScript 线程和 Silverlight UI 线程之间有什么关系?

JavaScript 是单线程的 - Silverlight 不是,但 JavaScript 和 Silverlight 之间的交互必须在 Silverlight UI 线程上执行。

然而,Silverlight UI 线程和 JavaScript 线程之间究竟是什么关系呢?从任何定义来看,它们是同一个线程,还是单独的线程,它们的交互纯粹通过各自的事件循环执行,并在等待另一个线程时阻塞一个线程(例如,从 Silverlight 评估/调用 JavaScript 时)?换句话说,JavaScript 是否可以与 UI 线程上的 Silverlight 操作同时执行(并且同一页面中托管的多个 Silverlight 实例是否可以同时运行它们的 UI 线程)?

0 投票
1 回答
641 浏览

silverlight - 如何防止 Silverlight 中的 UI 线程锁定

在视图中,我有一个按钮,可以调用视图模型中的方法

搜索.xaml

我在视图中还有一个 IsBusy 指标

(我在这个项目中使用 SimpleMVVM 工具包)

在视图模型中,我声明了我的方法以及 IsBusyIndi​​cator 等的属性。

搜索视图模型.xaml

然后在模型中我对 WCF 服务进行异步调用

搜索控件通过应用了 dataTempalte 选择器类的列表框控件加载结果。

我看到的问题是因为这个调用是从 UI 调用的,所以 UI 线程被锁定,直到为集合选择数据模板并返回结果。至此,IsBusy 指标甚至没有触发。

我的问题是有人能指出我应该如何进行这些调用以使 UI 线程不被锁定吗?我是否应该寻找某种后台线程等来进行调用,以便 UI 线程可以调用 IsBusy 指示器等。

如果您需要更多详细信息或其他样品,请告诉我。

提前致谢

0 投票
2 回答
1274 浏览

objective-c - 如何在 UI 线程上闪烁按钮?

我的 UI 上有一个按钮,一旦按下按钮,我想每 800 毫秒闪烁一次(打开然后再次关闭)。我用以下代码做到这一点:

...效果非常好,除了:UI 上还有一个 UIScrollView,当用户将手指放在上面并滚动时,按钮会冻结。虽然我完全理解为什么会这样,但我不知道该怎么办。

消息调度消息在performSelector:withObject:afterDelay当前线程上发送,即主线程,即。UI 踩踏,因此在所有其他 UI 活动结束之前不会处理消息。正确的?但我需要在 UI 线程上执行此操作,因为我无法选择/取消选择任何其他线程上的按钮,对吗?那么这里的解决方案是什么?

0 投票
2 回答
2328 浏览

android - 从视图在 UI 线程上运行

我有一个自定义视图,它本身包含多个视图。我已经做到了,当单击此容器视图中的一个视图时,它将运行一个“计时器”线程,该线程需要每秒更新一个 TextView,也在容器视图内。当我想每秒更新 TextView 时,就会出现我的问题。显然,这并不像我想象的那么容易。我像这样在我的容器视图中实现了 Runnable ,并在单击按钮以启动计时器时执行了线程:

我得到了典型的 cannot-touch-views-outside-hierarchy 异常,这基本上意味着它没有在 UI 线程上运行。我不想在post(Runnable)这里使用,因为我不想一直等到线程结束才更新一秒钟。将它所在的整个 Activity 传递给自己运行对我来说也是不切实际的runOnUiThread(Runnable)。那么有人可以告诉我如何去做这件事吗?如果有人需要澄清,请告诉我!

0 投票
3 回答
489 浏览

android - 我正在尝试制作一个简单的线程,在一段时间后更改文本视图

问题是,当我第二次单击按钮时,我的应用程序崩溃了,我不明白为什么。当我第二次点击按钮时,假设再次相同。

任何帮助表示赞赏。

0 投票
1 回答
421 浏览

android - 更改 ImageView 的资源时强制关闭

当我单击一个项目时,我在更改图像视图的资源时遇到了一些问题。我知道任何图形更新都应该在 UI 线程中完成,我尝试了两种方法但没有成功:

...我的代码没有处理程序:

...我的代码带有处理程序和可运行:

}

我已将onClick布局 XML 中的设置为“已单击”,并为所有可单击的图像提供了唯一的 ID。当我将 Log.d() 几乎放在代码中的任何地方时,我注意到它在iv.setImageResource(R.drawable.avatar_0);命令处停止。

有人可以帮我吗?我错过了什么?谢谢

这是一些额外的 LOGCAT 信息:

橙色/红色的第一行是这三行:

0 投票
3 回答
407 浏览

silverlight - silverlight 上的 odata 仅在 UI 线程上运行

我们正在使用 Silverlight 上的 OData,使用 DataServiceCollection 获取数据。

所有获取数据的调用 (LoadAsync() LoadNextPartialSetAsync()) 都是在工作线程上完成的。但是,“LoadCompleted”回调以及反序列化和对象物化是在 UI 线程中完成的。

我们对 DataServiceCollection 所在的 System.Data.Services.Client.DLL 进行了反编译,发现确实所有处理 OData 响应的代码都被分派到了 UI 线程。

有没有办法让反序列化在工作线程上被调用?

谢谢亚龙

0 投票
2 回答
649 浏览

wpf - UI 刷新在绘画时冻结应用程序

这是一个推测性的问题,所以没有提供代码。

我有一个应用程序,它采用一个大型 XML 文件并从中构建一个视图以供用户编辑。XML 的加载在后台工作程序中执行,然后通过树视图以非常普通的 MVVM 方式绑定到视图。

这一切都很好,并且在工作人员加载 XML 时会显示一个漂亮的等待光标。

但是,当 XML 文件变得非常大(20M)时,UI 将在绘制新视图期间挂起。这是意料之中的,但这确实意味着应用程序仍然存在的所有视觉提示,以及冻结。目前,一旦在油漆前在工人中完成装载,光标就会改变。是否有用于控件的“paintingHasFinished”类型事件或可以用作句柄的漂亮技巧,以便在此 UI 操作后更改等待光标?

0 投票
1 回答
846 浏览

android - TimerTask条件后Android切换视图

我想建立一些条件来在 X 时间后将用户踢出活动。

我明白了一般的想法:

  • 以毫秒为单位存储当前时间,以毫秒为单位从日历对象存储
  • 确定我希望用户在活动中停留多长时间
  • 添加多长时间 + 存储当前时间以确定启动关闭该活动的日历时间(以毫秒为单位)
  • 将踢出时间与当前时间进行比较(以毫秒为单位)

对于最后一步,我发现我能找到的最好的“时间监听器”是 TimerTask,实现如下:

这是 AsyncTask 的最后一部分,计数和“时间监听”实际上是有效的,但是当涉及到替换run()方法中的视图时,应用程序崩溃了

"Only the original thread that created a view hierarchy can touch its views."

我理解这个概念,但我不明白在解决函数中的计数后如何摆脱这个活动schedule。此外,由于需要进行一些刷新,因此我需要“替换”视图而不是仅对此活动使用“finish()”。

我想使用另一个简单的 AsyncTask,但该schedule函数需要 TimerTask

洞察力赞赏

0 投票
4 回答
5288 浏览

android - Android - 如何在 UI 线程之外设置 View.GONE?

当用户按下按钮时,我想让视图消失(消失)。

我可以通过执行以下操作在onCreate()方法(主 UI 线程)中实现它:

但是,我希望能够在另一个线程中(在主 UI 线程之外)做同样的事情。我试图将上述内容放在我的线程中,但没有成功。

先感谢您!

## 编辑 ####

为了让自己更清楚,我想做这样的事情:

}

但是,这不起作用!我怎样才能解决这个问题?