如何在首次启动C#程序时运行方法或事件?

时间:2011-06-15 19:38:33

标签: c# .net windows

我想知道是否可以在程序第一次启动时调用事件或方法,显然是第一次。这可能在C#中做到吗?如果是这样,有人可以展示一些如何实现这一目标的例子

2 个答案:

答案 0 :(得分:3)

第一次运行程序时,可以将文件写入磁盘或将值写入注册表。

你检查你设置的是否存在 - 如果它不存在,你运行你的方法,如果它存在,你没有。

答案 1 :(得分:2)

您可以通过在某个锁定文件上指定DelayUntilReboot标志来使用MoveFileEx本机方法:

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
    );

    static void Main()
    {
        string lockFile = "foo.dat";
        if (!File.Exists(lockFile))
        {
            // that's a first run after the reboot => create the file
            File.WriteAllText(lockFile, "");

            // Mark the file for deletion after reboot
            MoveFileEx(lockFile, null, MoveFileFlags.DelayUntilReboot);

            Console.WriteLine("it's a first run");
        }
        else
        {
            // that's a consecutive run
            Console.WriteLine("it's a consecutive run");
        }
    }
}