我在让程序中的主窗体按我想要的方式运行时遇到问题。我正在使用 C#。在我的初始主窗体(Form1)上,我有一个运行长程序的命令按钮。在程序中间,我希望用户能够返回到初始表单并单击一些新的复选框,我将从 C# 程序中将其放置在该初始表单上。下面的代码只是冻结初始形式。我不需要让下面的代码正常工作。我只需要它允许我访问使用命令按钮启动的程序中间的主要初始表单。
为此,我有一个调用计时器的无限 while 循环。这是执行此操作的正确方法吗?我不需要下面的程序来工作。我只需要能够在程序中间访问该初始表单。由于它不起作用,似乎这不是执行此操作的方法,但正确的方法是什么?
以下代码运行下面的 OnTimedEvent 函数(方法)。该函数用于放置一个消息框,但我将其注释掉了。我不需要该功能来工作。它仅用于测试目的。我的目标是我需要初始主窗体,以便我在它从命令按钮运行时输入更多信息。下面的函数运行了大约 15 次,我收到错误
引发了“System.OutOfMemoryException”类型的异常。
在线上aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent)
;
代码如下:
System.Timers.Timer aTimer;
// Create a timer with a one second interval.
aTimer = new System.Timers.Timer(100);
while (true)
{
// Hook up the event handler for the Elapsed event.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Only raise the event the first time Interval elapses.
aTimer.AutoReset = false;
aTimer.Enabled = true; // uncommented this now
//addded below
aTimer.Start();
}
我已经尝试了几种不同的方式,但主窗体总是冻结。我只想能够在主表单上选择内容(例如复选框)(Form1
)所以可能不需要下面的代码。上面的定时器调用OnTimedEvent
这是下面的。
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
// MessageBox.Show("Hello World");
}
在网络上的许多地方(包括 stackoverflow),我看到我应该使用计时器来使主初始表单可用,但上面的代码只会导致表单被冻结,并且我在表单顶部看到了栏表明它没有响应。
我使用的是 Windows XP 和 Visual Studio 2008。正如我上面指出的,我使用的是 C#。
总而言之,上面的代码是在命令按钮运行后使主初始窗体可用的正确方法吗?如果是的话,我做错了什么?如果这不是正确的方法,那什么是呢?
顺便说一句,我问了一个关于这个项目完全不相关的问题here https://stackoverflow.com/questions/14589943/reading-and-writing-from-a-serial-port-in-c-sharp-part-2
有任何想法吗?