【注意细节】桌面软件应用程序开发

入行4个月里的首个月开发经验总结!

首先是程序自启动,可根据需求,选择开启!

方法一、

①鼠标右键自己的exe程序,创建快捷方式

②win+R,打开运行对话框,输入shell:startup,如下图:

将exe文件的的快捷方式拷贝到这个目录下,然后下次重启的时候自己的应用程序就可以自启动了。

方法二、

在C#代码层中实现:在主Load的加载窗体中,

// 窗体启动事件代码
```javascript
 private void From1_Load(object sender, EventArgs e)
 {
     RegistryKey registryKey = Registry.CurrentUser.OpenSubKey
         ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
     registryKey.SetValue("BaichuiMonitor",Application.ExecutablePath);//"BaichuiMonitor"可以自定义
}

次部分转载于:C# 设置程序开机自动启动的2种方法_clhappyjiang的博客-CSDN博客_c#程序开机自启动

其次是在使用时,注意程序防呆的,或者线程多次并入卡死的代码段。

//第一种,禁止并线操作
Monitor.Enter(this);
try
{//代码段}
catch{}
finally{
Monitor.Exit(this);
}

///另一种
Thread.Sleep(延时时间);
Application.DoEvents();
return;

要注意的是,有时候程序只允许单一的打开,所以要限制,单程序运行:

        private static System.Threading.Mutex mutex;
        //系统能够识别有名称的互斥,因此可以使用它禁止应用程序启动两次 
        //第二个参数可以设置为产品的名称:Application.ProductName 
        // 每次启动应用程序,都会验证名称为OnlyRun的互斥是否存在 
        protected override void OnStartup(StartupEventArgs e)
        {
            mutex = new System.Threading.Mutex(true, "OnlyRun");
            if (mutex.WaitOne(0, false))
            {
                base.OnStartup(e);
            }
            else
            {
                MessageBox.Show("程序已经在运行!", "提示");
                this.Shutdown();
            }
        }

 并且在可能出错的地方加入try{}catch{}

部分非代码原因会出现错误的地方要加入,错误日志书写

        #region 方法--写错误日志
        /// <summary>
        /// 写错误日志
        /// </summary>
        public static  void WriteErrLog(string errTitle, Exception ex)
        {

            string path = AppDomain.CurrentDomain.BaseDirectory + "\\错误日志"+DateTime.Now.ToString("yyyyMMdd")+".txt";
            if (!File.Exists(path))
            {
                File.Create(path).Close();
            }
            else
            {
                FileInfo fs = new FileInfo(path);
                if (fs.Length > 1024 * 1024)
                {
                    File.Create(path).Close();
                }
            }
            StringBuilder strBuilderErrorMessage = new StringBuilder();

            strBuilderErrorMessage.Append("________________________________________________________________________________________________________________\r\n");
            strBuilderErrorMessage.Append("日期:" + System.DateTime.Now.ToString() + "\r\n");
            strBuilderErrorMessage.Append("错误标题:" + errTitle + "\r\n");
            strBuilderErrorMessage.Append("错误信息:" + ex.Message + "\r\n");
            strBuilderErrorMessage.Append("错误内容:" + ex.StackTrace + "\r\n");
            strBuilderErrorMessage.Append("________________________________________________________________________________________________________________\r\n");
            strBuilderErrorMessage.Append("\r\n");
            using (StreamWriter sw = File.AppendText(path))
            {
                sw.Write(strBuilderErrorMessage);
                sw.Flush();
                sw.Close();
            }
        }
        #endregion

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值