我在让程序中的主表单按我想要的方式运行时遇到问题。我正在使用 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#。
总而言之,上面的代码是在命令按钮运行后获取主初始表单的正确方法吗?如果是,我做错了什么?如果这不是正确的方法,那是什么?
顺便说一句,我在这里问了一个关于这个项目的完全不相关的问题
有任何想法吗?