win7系统main怎样设置-()

来源:191路由网 2022-10-21 14:31:32

win7系统main怎样设置 ()

基本上有独立过程的应用,都是基于Main作为入口,函数开始运行。在C#中,Main函数可以无参与无返回值,当然也可以有string[]参数和int返回值。WinFrom也符合这一规则。

那么Main作为一个过程的开始函数,谁传输这些参数?然后谁来接受这个返回值呢?显然不可能是过程本身,所以是系统或其他过程。

namespace WinFormDemo01{ internal static class Program{[STAThread]static int Main(string[]args){ MessageBox.Show($"Main方法中收到的参数:{string.Join(',', args)}"); ApplicationConfiguration.Initialize(); Application.Run(new Form1()); return 101; }}}

.NET中,除了在Main该方法也可用于接收参数Enviroment.CommandLine属性和GetCommandLineArgs方法接收,属性会用空格区分多个参数,方法返回值是一个string[],与Main中args不同的是,这里有一条应用程序运行路径。下面的代码是在Form在1窗体中,用按钮显示接收到的按钮Main方法参数。

namespace WinFormDemo01{ public partial class Form1 : Form{ public Form1(){ InitializeComponent(); }private void button1_Click(object sender, EventArgs e){ //MessageBox.Show(Environment.CommandLine); var args = Environment.GetCommandLineArgs(); if (args.Length > 1){ label1.Text = $";主程序:{args[0]},\\r\ \\r\ 参数:{string.Join(',', args[1..])}"; }}}}


用批处理调用过程

让我们来看看的用途widnows调用系统bat,实现对Main函数的送参和取回值,比如这个bat名称为result.bat,要求文件和我们的程序在文件夹下启动命令行程序,进入目录并运行rusult.bat即可。

@echo off WinFormDemo01 guisuwei 1234567890@if "%ERRORLEVEL%" == "0" goto ok :fail echo Execution Failed echo return value = %ERRORLEVEL% goto end :ok echo Execution succeeded echo Return value = %ERRORLEVEL% goto end :end


结果如下,可以看到Main中弹框参数

Form1中取Main函数参数

在命令行中收到的返回值为101

用一个过程来调用这个过程

虽然可以实现批处理调用,但使用场景仍然有限,一般来说,我们用一个过程来调用另一个过程,就像一个是主程序,另一个是子程序。

我们用WinFormDemo00来调用WinFormDemo01.这里有两种方法,即阻塞,也称为同步,另一种是非阻塞,或异步。

我们用WinFormDemo00来调用WinFormDemo01.这里有两种方法,即阻塞,也称为同步,另一种是非阻塞,或异步。buton1_click方法是异步,即调动WinFormDemo01后,WinFormDemo00该做什么,不会卡住等待它的返回值。button2_click在这种情况下,它会卡住,直到结果返回。using System.Diagnostics;namespace WinFormDemo00{ public partial class Form1 : Form{ public Form1(){ InitializeComponent(); }private void button1_Click(object sender, EventArgs e){ //WinFormDemo01所在路径 var pro = Process.Start(@"C:\\MyFile\\Asp.NetCoreExperiment\\Asp.NetCoreExperiment\\WinForm\\WinFormDemo01\\bin\\Debug\ et7.0-windows\\WinFormDemo01.exe", new string[]{ "gsw", "abcd" }); //必须使用此属性,事件生效 pro.EnableRaisingEvents = true; pro.Exited = Pro_Exited; }private void Pro_Exited(object? sender, EventArgs e){ ///因为是异常,这种方法所在的线程和UI线程不一样,所以用这种方法来操作UI线程的控件 this.Invoke((object sender) =>{ label1.Text = $"{DateTime.Now},WinFormDemo01返回值:{(sender as Process)?.ExitCode.ToString()}"; }, sender); }private void button2_Click(object sender, EventArgs e){ var pro = Process.Start(@"C:\\MyFile\\Asp.NetCoreExperiment\\Asp.NetCoreExperiment\\WinForm\\WinFormDemo01\\bin\\Debug\ et7.0-windows\\WinFormDemo01.exe", new string[]{ "gsw", "abcd" }); //阻塞 pro.WaitForExit(); label1.Text = $"{DateTime.Now},WinFormDemo01返回值: ro.ExitCode.ToString()}"; }}}

WinFormDemo00界面布局。

其实大部分桌面应用都是单体的,所以Main函数的参数和返回值并不重要,但如果你做一系列产品,有很多应用程序,每个应用程序都需要登录,那么用户信息或其他信息可以通过这种方法传输到另一个应用程序,当然,前提是两个系统共享用户系统数据。另外,传输涉密数据时要注意加密。另外,传输涉密数据时要注意加密。
点击展开全文

相关阅读

路由器浏览器登录-(用浏览器登录路由器)

登录路由器浏览器(用浏览器登录路由器)最常用的路由器登录地址是192.168.1.1.很多网友把192.168.1.1称为路由器登录官方网站和路由器官方网站登录入口,路由器的登录地址可能因品牌型号不同而不同。有用户表示不知...

2022-10-21

win7系统main怎样设置-()

win7系统main怎样设置()基本上有独立过程的应用,都是基于Main作为入口,函数开始运行。在C#中,Main函数可以无参与无返回值,当然也可以有string[]参数和int返回值。WinFrom也符合这一规则。那么Main作为一个过程的开始函数,谁传输这些参数?然后谁来接受这个返回值呢?显然不可能是过程本身,所以是系统或其他过程。namespaceWinFormDemo01...

2022-10-21

光猫与路由器的接法-(光猫和路由器的接法)

光猫与路由器的连接(光猫与路由器的连接)在家庭路由器深度折腾的集合中,我本来想解释一下路由器除了上网带来的其他功能。后来发现很多人更关心如何让家里的路由器上网。也许平时交流的朋友都有一定的网络基础,忽略了很多人的需求还是停留在刚需水平。今天我们来谈谈路由器如何连接猫上网。猫(调制解调器)的两种工...

2022-10-21

u盘上文件夹空删不-(u盘里的空文件夹删不掉)

u盘上文件夹空删不(u盘中的空文件夹无法删除)U盘文件无故消失了?在这个数据时代,U存储设备可以说是员工的首选,但我们在使用U盘时可能会遇到这样的情况:我没有删除U盘中的文件,U盘内存没有变化,为什么U盘文件没有删除却消失了?U盘里找不到这些文件。原因是什么?U磁盘文件无故消失可能有两个原因:第一,U盘的外部...

2022-10-21

k3路由器多拨固件-(k3路由器刷固件)

k三路由器多拨固件(k3路由器刷固件)经常在网上辗转反侧的人可能知道更多的拨号。今天,我们主要讨论更多的拨号话题,并结合我们自己的一些尝试与您分享。喜欢的朋友和朋友可以关注我,不时更新家庭网络相关技术。如果您有任何问题言,看到就回复;多拨是我们的宽带账户多次PPPOE拨号,多个IP地址。相当于宽带变成了很多条。作用:多外网可外网IP,上下网速叠加,让我们上网更快。100M变...

2022-10-21

191路由网 - 192.168.1.1,192.168.0.1无线路由器设置教程

版权声明:本站的文章和图片来自互联网收集,仅做分享之用如有侵权请联系站长,我们将在24小时内删除