c# - 在单声道下运行时,System.Windows.Forms.Timer 事件根本不会触发

标签 c# .net linux mono

我用 monodevelop 编译了我的应用程序。并尝试在 Linux 上运行单声道。似乎 System.Windows.Forms.Timer 对象的 tick 事件从未触发。

它在 Windows 上运行没有问题,但在 Linux 上却没有。

相关代码大致如下:

// derived from a From
//...
private Timer controlTimer;
//....
protected override OnCreateControl(/*...*/)
{
//,,,
    controlTimer=new Timer();
    controlTimer.Tick += new EventHandler(controlFunc);
    controlTimer.Interval = 40;
    controlTimer.Tag = this; // The form is used by the callback
    controlTimer.Start();
//...
}
//....

最佳答案

即使是最简单的 winform 应用程序也不会在单声道下运行计时器...

但如果我将初始化放在 form1_load 中,然后将其添加到 form.load 事件中,它就会运行。

编辑:如果您将 base.OnCreateControl() 放在方法的末尾,则 OnCreateControl 可以正常工作。 在 .NET 上,它可以在没有该行的情况下工作,并且之前也可以在单声道下工作......

所以这似乎是单声道中的一个错误,我会报告它。

关于c# - 在单声道下运行时,System.Windows.Forms.Timer 事件根本不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763898/

相关文章:

c# - EF Core 无法从匿名类型的查询选择转换为 DTO 对象类

c# - 可以从命令行运行 WinForms 程序吗?

c# - 如何使用 AutoMapper 将从 ForMember() 中的函数调用获得的值传递给另一个值

linux - 使用 Gnuplot 时缺少终端 "png"

linux - 允许特定 IP 的 MongoDB 远程访问

c# - 从可枚举中获取下一个 N 个元素

c# - 如何使用异或运算正确加密jpeg文件

c# - 用于从列表中删除某些对象的 Lambda 或 LinQ 表达式

c# - 标签在 OnDraw 事件中动态创建并可从 Visual Studio Designer 编辑

linux - 如何使用 sed 替换退格字符 (\b)?