有关使用c#与Winforms中的UI线程同步的基本问题

问题描述 投票:0回答:1

我知道Winforms只有一个UI线程,如果您需要在另一个线程上进行更新,则应该使用invoke方法。

我的问题是,如果您正在执行的操作不会改变任何控件的外观,那还会访问UI线程吗?

例如,我的form1有一个记录器,该记录器将消息写到用户根本看不到的本​​地文件中。如果我在另一个线程中使用记录器,比如说写一条新消息,是否将其视为访问UI线程?是的,记录器已在form1.cs中初始化,但它在窗体上根本没有视觉表示。我还需要使用invoke吗?

此外,如果我有一个扩展文本框的自定义控件。定制控件具有一个称为Initialized的属性。更改此属性对控件的外观没有任何影响。然后,如果我从另一个线程更新此属性,是否需要使用invoke方法?

c# multithreading winforms ui-thread thread-synchronization
1个回答
0
投票

例如,如果只有一个线程使用记录器实例,则无需同步,否则,如果有多个线程可以写入该记录器实例,则需要使用锁或监视器,而不是与UI线程而是在线程之间进行同步。

最后一个问题也是一样。

© www.soinside.com 2019 - 2024. All rights reserved.