【发布时间】:2018-07-27 19:39:17
【问题描述】:
我在 WinForm 上有一个 trackbar。我正在BackgroundWorker 中执行一些操作。我正在使用 BeginInvoke 访问 UI 元素。现在我可以使用以下方法轻松设置trackbar 值:
trackbar.BeginInvoke((Action)(() => trackbar.Value = 50)).
如何在BackgroundWorker 中使用BeginInvoke 获取轨迹栏当前值?
length = trackbar.BeginInvoke((Action)(() => trackbar.Value)) 无法编译。
trackbar.BeginInvoke((Action)(() => length = trackbar.Value)) 编译但不起作用。
我们将不胜感激。
【问题讨论】:
-
你不能一开始就传入你的trackbar值吗?使用 bw.RunWorkerAsync(trackbar.Value);然后在 DoWork 事件中保留本地副本?然后每次你需要更新 trackbar 的值时你更新本地副本然后继续使用 BeginInvoke 来更新它。
-
不,我必须获取用户在运行时设置的轨迹栏的当前值。
-
那是因为你一开始就启动后台工作程序,然后让它永远运行吗?理想情况下,您只会让后台工作程序在需要运行时运行。
标签: c# multithreading delegates backgroundworker trackbar