c# - 没有调用的C#事件

标签 c# winforms events

我是C#事件的新手,我想触发一个事件而又不会收到跨线程错误。

using System;
using System.Timers;

public class SampleTickEvent
{
private string passStr = string.Empty;
Timer t = new Timer(1000);

public delegate void ImageEventHandler(string s);
public event ImageEventHandler ImageEventTrigger;

public void Start(string ss)
{
    passStr = ss;
    t.Start();
    t.Elapsed += t_Elapsed;
}

public void t_Elapsed(object sender, ElapsedEventArgs eea)
{
    ImageEventTrigger(passStr);
}
}




private void button1_Click(object sender, EventArgs e)
    {
        SampleTickEvent ste = new SampleTickEvent();
        ste.Start("sample");
        ste.ImageEventTrigger += ste_ImageEventTrigger;
    }

    private void ste_ImageEventTrigger(string s)
    {
        Action act = () => listBox1.Items.Add(s);
        Invoke(act);
    }


还有另一种方式我不会将Action act =()= ...放到listbox1.Items.Add(s)中吗?

最佳答案

而不是使用System.Timers.Timer,而是尝试使用System.Windows.Forms.Timer,编写该代码是为了引发UI线程上的事件。

关于c# - 没有调用的C#事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185614/

相关文章:

c# - 自定义 DataGridViewCheckBoxCell 视觉更新在编辑模式下不起作用

c# - 为什么在 Windows 经典主题中 TabControl 背景没有改变颜色?

c# - DGV CellPainting 行为异常

c# - 在 C# 中强制转换为另一种类型的自定义结构

c# - ListView 中选定索引的问题

javascript - 如何在 iframe 中发生点击时触发事件?

jQuery - 如何在页面上同步多个动画?

c++ - Skype4COM C++ 事件处理

C# MouseEventArgs "e.Delta"不工作

c# - 编写此 C# 循环代码的更优雅方式?