在C#中,我遇到了Backgroundworker组件并发性。尽管它比使用普通的Vanila线程稍微先进一些,但我发现它要平滑得多。

我还没有在Java中使用SwingWorker。在线程上进行一些编码时,我遇到了这个reference from JavaDoc for SwingWorker as a solution for threadsafety when working with swing objects

问题:在C#中,我不会想起类似“对于WinForm / WPF布局不是线程安全的,所以请使用BackgroundWorker”这样的语句。我想知道SwingWorker是否可以代替Java中所有方面的线程,例如在C#中如何使用BackgroundWorker?

对于新手来说,我应该期望SwingWorker具有相同的性能/流畅的运行/完全的调试支持吗?

最佳答案

我想知道SwingWorker是否可以代替Java中所有方面的线程,例如在C#中如何使用BackgroundWorker?


虽然实现了Runnable,Future和RunnableFuture的SwingWorker可以在使用Runnable或Future的任何地方使用,但不,我不会这样做。与基本的Thread / Runnable相比,SwingWorker的设置和使用要复杂一些,在非Swing情况下使用它也无益。 SwingWorker被构建为允许创建后台线程,同时确保在Swing事件线程上调用其代码的某些部分。在没有Swing事件线程的应用程序中运行时,这没有任何意义。



编辑
您声明:


  这意味着适当的基于Swing的应用程序具有SwingWorker和基本Thread / Runnable的组合,以使其运行流畅。


您是从我上面的陈述中得出的。您的说法没有道理,而且肯定不是我上面所说的。


  那只是没有用,这也是我给予更多关注的原因-因为它是由JavaDoc指导的,其基础是“ Swing不是线程安全的”。


大多数GUI库也是如此。

10-07 19:20
查看更多