入行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