c# 定期重启程序操作的实现

 更新时间:2023年09月06日 09:12:35   作者:kingwebo'sZone  
本文主要介绍了c# 定期重启程序操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、Restart方法

System.Windows.Forms.Application.Restart();

经测试发现有时候只会关闭程序,并不会重新启动

二、Process.Start()和Exit()

System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);
Application.Exit();

经测试发现有时候也只会关闭程序,并不会重新启动

三、进程的Start和Kill方法

System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);
System.Diagnostics.Process.GetCurrentProcess().Kill();

经测试使用进程进行重启比较稳定。

//开启新的实例  
System.Diagnostics.Process.Start(Application.ExecutablePath);
//关闭当前实例    
System.Diagnostics.Process.GetCurrentProcess().Kill();
Application.Exit();//退出当前项目,如果是子项目,则不会停止主项目
System.Environment.Exit(0);//停止所有项目

四:使用Process方式

Process p = new Process();
p.StartInfo.FileName = System.AppDomain.CurrentDomain.BaseDirectory + “xxx.exe”;
p.StartInfo.UseShellExecute = false;
p.Start(); 
Application.Current.Shutdown();

未测试。

带参数重启

Process proc = new Process();
proc.StartInfo.FileName = @"MyExecutable.exe";
proc.StartInfo.Arguments = "\"C:\\My Docs\\SomeDirectory\\MyXMLPath.xml\"";
proc.Start();

我的数据库结构:

GO
/****** Object:  Table [dbo].[RestartLog]    Script Date: 09/04/2023 20:45:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[RestartLog](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[RestartDate] [datetime] NULL,
	[ThisPCName] [nvarchar](80) NULL,
	[IPAdd] [nvarchar](80) NULL,
	[CreateDate] [datetime] NULL
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'重启时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'RestartLog', @level2type=N'COLUMN',@level2name=N'RestartDate'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'计算机名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'RestartLog', @level2type=N'COLUMN',@level2name=N'ThisPCName'
GO
ALTER TABLE [dbo].[RestartLog] ADD  CONSTRAINT [DF_RestartLog_CreateDate]  DEFAULT (getdate()) FOR [CreateDate]
GO

我的DAL处理操作方法:

 /// <summary>
        /// 主要的数据操作
        /// </summary>
        /// <returns></returns>
        public ResultMsg InsertAndUpdate(int HourRestart)
        {
            ResultMsg msg = new ResultMsg();
            try
            {
                string SqlStr = $@" DECLARE   @IPadd nvarchar(80); ---Ip地址
                              DECLARE   @PCName nvarchar(100); --计算机名
                              DECLARE   @TempId  int ;--0无数据,1时间未到,2需要重启
                              DECLARE   @OutInt  int;---返回数据
                              DECLARE   @RestartHour  int;---重启时间
                              Select    @IPadd= CONVERT( nvarchar(80) ,CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') ) ; 
                              Select    @PCName= HOST_NAME(); 
                              set @RestartHour={HourRestart};
                              if  exists(  SELECT  * FROM [RestartLog] WHERE [IPAdd] = @IPadd   ) 
                                  begin 
                                      if exists(  SELECT  * FROM [RestartLog] WHERE [IPAdd] = @IPadd  and datediff(hour,RestartDate,getdate())>@RestartHour)
                                      begin 
                                             update  [RestartLog] set  RestartDate = GETDATE() WHERE [IPAdd] = @IPadd  and datediff(hour,RestartDate,getdate())>@RestartHour;
                                             set @OutInt = 2;--需要重启
                                      end 
                                      else
                                      begin
                                           set @OutInt = 1;--时间未到不需要需要重启
                                      end  
                                  end 
                              else ----无数据,需要插入数据
                                 begin
                                     insert  [RestartLog] ( [RestartDate] ,[ThisPCName] ,[IPAdd],[CreateDate]) values (GETDATE(),@PCName,@IPadd,GETDATE());
                                     set @OutInt = 0; 
                                  end
                                select @OutInt; ";
                msg.ReturnInt = DapperDbHelper.ExecuteScalar<int>(SqlStr);
                msg.Success = true;
            }
            catch (Exception ex)
            {
                msg.Success = false;
                msg.ErrMsg = ex.Message; 
            }
            return msg;
        }

 到此这篇关于c# 定期重启程序操作的实现的文章就介绍到这了,更多相关c# 定期重启内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Unity Sockect实现画面实时传输案例原理解析

    Unity Sockect实现画面实时传输案例原理解析

    Socket是比较常用的一种通信方式,本文通过案例给大家介绍Unity Sockect实现画面实时传输功能,感兴趣的朋友一起看看吧
    2021-08-08
  • C#生成word记录实例解析

    C#生成word记录实例解析

    这篇文章主要介绍了C#生成word记录实例解析,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • 简单聊聊c# 事件

    简单聊聊c# 事件

    这篇文章主要介绍了c# 事件的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#中txt数据写入的几种常见方法

    C#中txt数据写入的几种常见方法

    这篇文章主要给大家介绍了关于C#中txt数据写入的几种常见方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • c#调用c++的DLL的实现方法

    c#调用c++的DLL的实现方法

    本文主要介绍了c#调用c++的DLL的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • .NET(C#):Emit创建异常处理的方法

    .NET(C#):Emit创建异常处理的方法

    .NET(C#):Emit创建异常处理的方法,需要的朋友可以参考一下
    2013-04-04
  • C#窗体间通讯处理的几种方法总结

    C#窗体间通讯处理的几种方法总结

    这篇文章主要介绍了
    2013-11-11
  • C#结合AForge实现摄像头录像

    C#结合AForge实现摄像头录像

    最近由于兴趣学习了下在C#上使用AForge录制摄像头视频并压缩编码。总体上来说这个第三方.net视觉开发库还是比较稳定的
    2017-09-09
  • Unity解析gif动态图操作

    Unity解析gif动态图操作

    这篇文章主要介绍了Unity解析gif动态图操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#使用ThoughtWorks.QRCode生成二维码

    C#使用ThoughtWorks.QRCode生成二维码

    ThoughtWorks.QRCode是一款功能强劲的动态链接库,能够为.net应用生成二维码,这篇文章主要为大家详细介绍了C#使用ThoughtWorks.QRCode生成二维码的具体方法,需要的可以参考下
    2024-04-04

最新评论