我正在将控制台应用程序移植到.NET Core ,我正在尝试替换此行: AppDomain.CurrentDomain.UnhandledException += UnhandledException; 看完之后,似乎没有内置的方法来做到这一点。 所以我的问题是:用try/catch替换围绕我的整个代码的这一行的唯一方法是什么? 通过阅读本文 ,似乎还有另一种方法,即继续使用System.AppDomain ,但我似乎无法找到这个类/方法。 我唯一的猜测是这个库 ,但它明确指出,如果可能的话不应该使用它,所以我不愿意。
我有一个excel文件。 我上传了截图。 我需要编写一个.NET应用程序(控制台应用程序)来解析excel文件。 您可以看到标题为“function名称”的单元格。 我的.NET应用程序应该找到该特定单元格并读取该列中的内容,例如Template,InstanceFromTemplate,Task等。 如果它读取Task,它应该像Task()一样调用CreateTask函数; 如果它读取InstanceFromTemplate,它应该调用InstanceFromTemplate函数,如TaskInstanceFromTemplate(); 我已经为这些函数编写了代码。 我只需要有关如何解析excel表的帮助,转到该特定列,读取包含该列下的函数名称的单元格并调用该适当的函数。 任何帮助,将不胜感激。 算法就像 打开excel文件 搜索标题为“函数名称”的标题单元格 读取标题单元格下的第一个单元格 如果第一个单元格读取,则调用函数(GetAllTemplate函数的代码已经存在)只需要在找到它之后调用它 如果是第二个单元格,则调用函数。 到达标题单元格function名称下的最后一个单元格。 所以,退出
我正在写一个小应用程序,它将等待按键,然后根据按下的键执行操作。 例如,如果没有按下任何键,它将继续等待,如果按下按键1,它将执行动作1,或者如果按下按键2,它将执行动作2.我找到了几个有用的post到目前为止, 这一个是一个例子。 从此,到目前为止,我有以下代码。 do { while (!Console.KeyAvailable) { if (Console.ReadKey(true).Key == ConsoleKey.NumPad1) { Console.WriteLine(ConsoleKey.NumPad1.ToString()); } if (Console.ReadKey(true).Key == ConsoleKey.NumPad2) { Console.WriteLine(ConsoleKey.NumPad1.ToString()); } } } while (Console.ReadKey(true).Key != ConsoleKey.Escape); 这有几个问题,你可能已经猜到了。 1)使用ReadKey检测按下哪个键会导致暂停,这意味着必须按下该键。 我真的需要找到一种方法来避免这种情况。 可能使用KeyAvailable ,但我不确定如何使用它来检测哪个键被按下 – 任何想法? 2)由于某种原因, Escape键不会逃脱应用程序。 如果我删除if语句就行了,但是如上所述运行代码不会让我使用指定的键退出应用程序 – 任何想法?
好吧,让我再说清楚。 我有一个包含许多类的控制台应用程序,在每个类中至少有一个Console.WriteLine(“text”)行。 我定义了一些参数,在运行应用程序时,它输出的正是我在类中编写的内容。 在那里,我想定义一个参数,当我使用此参数运行应用程序时,控制台屏幕上将没有输出但控制台窗口仍然出现。 这个论点可能就像“-s”。 那么,如果不在每个类中使用“if”条件并通过类传递参数,我能做到这一点吗? 非常感谢。 P / S:我通过互联网搜索并发现了一些与此相关的文章,但大多数答案是隐藏控制台窗口。 我认为这个问题应该是其他人的意思。
我有一个在visual studio中运行的c ++控制台应用程序。 这将收集数据并在控制台中显示所有原始数据。 另一个应用程序(C#)用于收集此信息并将其呈现给UI。 是否可以通过将C ++一个放在C#中来将两者结合起来,以便两者同时运行,而C ++应用程序将其信息输出到面板或类似的东西? 谢谢! 🙂
我感觉像是一个总的菜鸟问这个,但无论如何,它在这里: 我想知道从不同线程同步事件的最简单方法是什么。 一些示例代码: class Program { static void Main(string[] args) { Console.WriteLine(“# started on:” + Thread.CurrentThread.ManagedThreadId); tt t = new tt(); t.First += new EventHandler(t_First); t.Second += new EventHandler(t_Second); Task task = new Task(new Action(t.Test)); task.Start(); while (true) { Console.ReadKey(); Console.WriteLine(“# waiting on:” + Thread.CurrentThread.ManagedThreadId); } } static void t_Second(object sender, EventArgs e) { Console.WriteLine(“- […]
我有一个奇怪的问题。 我编写了一个winform服务器应用程序和一个winform客户端应用程序。 客户端的作用是将用于运行某个脚本的命令发送到服务器。 服务器接收这些命令,解析它们并运行它们。 这两个工作很棒。 我编写了一个cmd应用程序,它使用了我客户端的一些function。 该应用程序应该用作cmd客户端。 问题是:当我运行winform客户端时,服务器运行命令完全没有问题。 当我运行cmd客户端时,当服务器尝试执行收到的命令时,服务器端的Windows会弹出是否可以运行脚本的安全问题(请参阅附图)。 为什么会在cmd上发生,而不是在winforms上发生。 这是我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Win32; using System.Net.Sockets; using System.ComponentModel; using System.IO; using System.Management; namespace RemoteBatcher { class ClientCmdProgram { private static RegistryKey registryKey; private static Socket clientSock; private static string remoteIpAddress = “192.168.0.1”; private static int remotePort = 8; […]
我在我的控制台应用程序中调用异步方法。 我不希望应用程序在启动后立即退出,即在等待完成任务之前。 好像我可以这样做: internal static void Main(string[] args) { try { Task.WaitAll(DoThisAsync()); } catch (Exception ex) { Console.Error.WriteLine(ex); throw; } } internal static async Task DoThisAsync() { //… } 但根据Stephen Cleary的文章 ,似乎我不能这样做,而应该创建某种上下文,让async在完成后返回(例如AsyncContext )。 上面的代码可以工作,它在Task.WaitAll(DoThisAsync());之后返回主线程Task.WaitAll(DoThisAsync()); ,那么为什么我需要使用自定义上下文?
我正在制作一个简单的应用程序来模拟银行家的问题 。 我想要模拟的是: 你在商店里有4个柜台。 1柜台开放。 客户开始进入并进入第一个柜台的生产线。 当第四个客户进入第一个柜台的生产线时,应打开另一个柜台。 该线应在两个计数器之间平均分配。当第二个柜台的客户得到帮助而没有新客户进入该线时,计数器应该关闭。 基本上4太多了。 我似乎无法弄明白。 我知道我需要使用队列。 但是怎么样? 有人能在控制台应用程序中给我一个例子吗? 优先C#。 提前致谢。 这是我到目前为止尝试过的, 注册类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RegisterCounter { class Register { private int customerCount; public Queue Line = new Queue(); public Register() { customerCount = 2; } public Register(int customerCount) { this.customerCount = […]
使用AttachConsole,当我附加的进程正在运行并且喷出时,我仍然可以键入并运行其他命令。 我的程序以表单或命令行运行。 如果以参数启动,它将在命令窗口中运行。 我使用AttachConsole(-1)将我的进程附加到我调用的命令窗口。 它工作得很好,我从我的过程中得到了所有的输出。 但是,控制台仍然处理来自键盘的用户输入,无论我输入什么,例如,如果我键入’cls’并按Enter键,输出将被擦除。 如何在进程运行时阻止用户对控制台的输入?