我在WinForm上有一个trackbar
。我正在BackgroundWorker
中执行一些操作。我正在使用BeginInvoke
访问UI元素。现在,我可以使用以下方式轻松设置trackbar
值:
trackbar.BeginInvoke((Action)(() => trackbar.Value = 50))
。
如何使用BeginInvoke
中的BackgroundWorker
获取轨迹栏的当前值?
length = trackbar.BeginInvoke((Action)(() => trackbar.Value))
无法编译。
trackbar.BeginInvoke((Action)(() => length = trackbar.Value))
可以编译,但是不起作用。
我们将不胜感激任何帮助。
答案 0 :(得分:0)
您无法使用BeginInvoke
来完成此操作,因为它所做的是它会在内部(字面PostMessage
)发布一条消息,并且不进行处理就返回。
您需要改用Invoke
,它发送消息,对其进行处理,然后才恢复功能:
int length;
trackbar.Invoke((Action)(() => length = trackbar.Value));
不言而喻,这种紧密循环的代码会降低性能。小心使用Invoke
!