【发布时间】:2011-06-15 22:01:18
【问题描述】:
我有一个奇怪的情况,我的应用程序在我关闭我的主窗体后仍然在内存中徘徊,我的 Program.cs 代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace WindowsFormsApplication1
{
static class Program
{
[Flags]
enum MoveFileFlags
{
None = 0,
ReplaceExisting = 1,
CopyAllowed = 2,
DelayUntilReboot = 4,
WriteThrough = 8,
CreateHardlink = 16,
FailIfNotTrackable = 32,
}
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern bool MoveFileEx(
string lpExistingFileName,
string lpNewFileName,
MoveFileFlags dwFlags
);
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
string lockFile = "run.dat";
if (!File.Exists(lockFile))
{
// that's a first run after the reboot => create the file
File.WriteAllText(lockFile, "");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form2());
}
else
{
// that's a consecutive run
}
Application.Run(new Form1());
}
}
}
【问题讨论】:
-
您的应用程序是否创建任何后台工作线程?
-
我这里也有同样的情况。使用线程。但是一个线程需要一个“Application.IsShuttingDown”属性,但除了 ApplicationExit 事件之外没有,但该类无法在每次调用时添加此事件。