每秒增加进度条 - 错误

时间:2015-12-15 20:28:43

标签: c# winforms timer

这是我第一次体验C#,我正在尝试创建一个进度条,每秒增加一个值(程序的一部分,它从另一个对象接收当前值并将其设置为进度条)。

我的简化对象来源:

public delegate void LoadingProgressChanged(int percents);
public event LoadingProgressChanged loadingProgressChanged;

public void Enable()
{
    loadingTimer = new Timer(1000);
    loadingTimer.Elapsed += new ElapsedEventHandler(IncreaseLoadingPercentage);
    loadingTimer.Start();
}

private void IncreaseLoadingPercentage(object source, EventArgs e)
{
    loadedPercents += getLoadingPercentsPerSecond();
    loadingProgressChanged(loadedPercents);
}

表格来源: 在构造函数

router.loadingProgressChanged += new AbstractRouter.LoadingProgressChanged(percentageChanged);

百分比身体变化

public void percentageChanged(int percs)
{
    progressBar1.Value = percs;
}

我收到错误

  

发生了'System.InvalidOperationException'类型的异常   System.Windows.Forms.dll但未在用户代码中处理

     

附加信息:跨线程操作无效:控制   'progressBar1'从线程以外的线程访问   创建于。

     

如果存在此异常的处理程序,则程序可能是安全的   继续进行。

我理解为什么会发生这种情况:似乎在计时器线程中调用了percentageChanged表单。但是如何正确实现呢?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

$(".imgcon").lightGallery();