C#获取当前应用实例所在的目录及防止实例多次运行

本文介绍了从VB6过渡到C#进行Windows桌面应用开发的经验,分享了如何获取应用启动目录及自身文件名信息的方法,并提供了一个防止应用重复启动的示例代码。通过了解VB6的基础并应用于C#,可以加速学习过程。同时,文章提醒注意命名空间的正确引用以避免编译错误。
摘要由CSDN通过智能技术生成

高中的时候开始接触的VB6,那都是十几年前的事了,半年前因为工作需要接触了C#,虽然VB6现在基本已经忘差不多了,更别提再用它来做个什么东西,更何况很多人心中VB6如此老旧估计也淘汰差不多了,但如果之前没有过VB基础,叫我直接跳到C#做Windows桌面应用,完全自学的话怕是要花不少功夫。还好知道VB中至少有些特性在C#肯定也是有的,只是实现方法不一样而已。写个笔记,记录一下,以免遗忘。

获取应用启动目录及自身文件名信息的方法:

//总是获得一个以“\”结尾的应用运行路径;
textBox1.Text = AppDomain.CurrentDomain.BaseDirectory;

//获取一个应用运行的路径,如果在根目录,则以“\”结尾,否则结尾不带“\”
textBox1.Text = Environment.CurrentDirectory;
textBox1.Text = System.IO.Directory.GetCurrentDirectory();

//获取一个应用运行的路径,如果在根目录,则以“\”结尾,否则结尾不带“\”,仅用于WindowForm应用程序
textBox1.Text = Application.StartupPath;

//获取当前应用的exe文件名(不含路径),如:WindowsFormsApp1.exe
textBox1.Text = AppDomain.CurrentDomain.FriendlyName;

//获取一个包含应用程序exe文件名的完整路径,只能在WindowForm应用程序中使用
textBox1.Text = Application.ExecutablePath;


//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称
textBox1.Text = Application.ExecutablePath;

避免应用重复启动的方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            bool ret;
            Mutex mutex = new Mutex(true, Application.ProductName, out ret);
            if (ret)
            {
                Application.Run(new Form1());
            }
            else
            {
                MessageBox.Show("该程序已经启动", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}

如果报错,就看看命名空间是否正确,默认项目里面的using System.Threading.Tasks改成using System.Threading就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值