Tag: 控制台应用程序

在C#console应用程序中更改线程上下文

我有一个C#控制台应用程序,其中我可以通过TCP套接字连接获得输入。 当我通过套接字通过接收function接收输入时,如何切换到主线程? 在WPF中类似于这样的东西: public void TaskDispatcher() { if (DispatcherObjectForTaskDispatcher.Thread != System.Threading.Thread.CurrentThread) DispatcherObjectForTaskDispatcher.Invoke(new TaskDispatcherDelegate(TaskDispatcher)); else { // Do some thing in the UI thread } }

控制台应用程序C#的关闭事件

我怎么知道我的C#控制台应用程序什么时候停止? 有没有这样的事件? 谢谢!

从另一个可执行文件获取输出

我目前正在尝试将可执行控制台应用程序的输出转换为另一个。 确切地说,我正在尝试做的事情的一点概述: 我有一个我无法编辑的可执行文件,也没有看到它的代码。 它在执行时会将一些(相当多的是诚实的)行写入控制台。 现在我想编写另一个可执行文件来启动上面的那个并读取它写的东西。 对我来说似乎很简单,所以我开始编码,但最后收到一条错误消息,指出StandardOut has not been redirected or the process hasn’t started yet. 我尝试使用这种结构(C#): Process MyApp = Process.Start(@”C:\some\dirs\foo.exe”, “someargs”); MyApp.Start(); StreamReader _Out = MyApp.StandardOutput; string _Line = “”; while ((_Line = _Out.ReadLine()) != null) Console.WriteLine(“Read: ” + _Line); MyApp.Close(); 我可以打开可执行文件,它也会打开内部的可执行文件,但是一旦读取返回的值,应用程序就会崩溃。 我究竟做错了什么?!

即使管理员已经同意,也会触发ADAL用户同意

我创建了一个使用Azure Active Directory进行身份validation的Web API。 它使用多租户AAD。 为了测试它,我还创建了一个控制台应用程序,它使用ADAL库对AAD进行身份validation,以便我可以访问我的API。 在主要的AAD租户中,一切运作良好,因为我不需要授予任何东西。 但是当从第二个租户访问应用程序时,我首先触发管理员同意流程(添加prompt=admin_consent )。 但是当我再次退出并打开应用程序时,如果我尝试使用没有管理员权限的用户登录AAD,它会尝试打开用户同意并且失败(因为用户无权允许访问AAD)。 如果我已经给予管理员同意,那么用户是否应该同意? 测试应用程序的代码是: using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Security.Authentication; using System.Threading.Tasks; using System.Web; using Microsoft.IdentityModel.Clients.ActiveDirectory; using Newtonsoft.Json; namespace TestConsole { internal class Program { private const string _commonAuthority = “https://login.microsoftonline.com/common/”; private static void Main(string[] args) { ConsoleKeyInfo kinfo = Console.ReadKey(true); AuthenticationContext ac […]

ThreadPool没有立即启动新线程

我有一个C#Windows服务启动各种对象(类库)。 这些对象中的每一个都有自己的“处理”逻辑,通过使用ThreadPool启动多个长时间运行的处理线程。 我有一个例子,就像这样: System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(WorkerThread_Processing)); 这很好用。 我的应用程序没有任何问题,我的线程运行良好。 现在,对于回归测试,我启动了相同的对象,但是从C#Console应用程序而不是Windows服务。 它调用相同的确切代码(因为它调用相同的对象),但WorkerThread_Processing方法在启动之前延迟最多20秒。 我已经进入并从ThreadPool切换到Thread ,问题就消失了。 这可能会发生什么? 我知道我没有超过MaxThreads计数(我最多开始20个线程)。

InvalidOperationException:撤消操作遇到的上下文与相应的Set操作中应用的上下文不同

我得到以下exception: Exception Type: System.InvalidOperationException Exception Message: The Undo operation encountered a context that is different from what was applied in the corresponding Set operation. The possible cause is that a context was Set on the thread and not reverted(undone). Exception Stack: at System.Threading.SynchronizationContextSwitcher.Undo() at System.Threading.ExecutionContextSwitcher.Undo() at System.Threading.ExecutionContext.runFinallyCode(Object userData, Boolean exceptionThrown) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteBackoutCodeHelper(Object backoutCode, Object userData, […]

按下“Ctrl + C”按钮处理C#控制台应用程序

如何处理同时按下的两个按钮(’Ctrl’+’C’),而不是在WindowsForms应用程序中,而是在控制台C#应用程序中?

为控制台应用程序制作UI

如何为控制台应用程序创建一个界面,使其在Microsoft操作系统下看起来像edit.com 。 目标语言是C,C ++和C#.NET。

在程序启动时实例化一个随机类

我现在正忙着inheritance和其他一些概念。 我创建了一个控制台应用程序,其中包含以下类: Public abstract Organism Public abstract Animal : Organism Public Bird : Animal Public Mammal : Animal Public Reptile : Animal Public Fish : Animal Public Amphibian : Animal Public Human : Organism 当控制台应用程序启动时,我想从人类,鱼类,哺乳动物,爬行动物,鸟类或两栖动物类创建一个新对象。 要实例化这些类中的哪一个是随机选择的。 一旦随机选择了一个类,我就使用console.writeline来询问用户关键问题,以便为给定的对象属性赋值。 如何从这些类中的一个创建随机对象?

当未处理的exception终止执行时退出代码?

当C#.Net控制台应用程序由于未处理的exception而终止时,是否有规则确定返回哪个退出代码或始终使用255? 我一直无法找到相关文档。 一个简单的控制台应用程序执行throw new Exception()死亡退出代码255.我想知道是否可以安全地假设所有未处理的exception将返回相同的错误代码或如果有变化/角落情况我需要是意识到。 C:\Temp\> ThrowsExceptionConsoleApp.exe C:\Temp\> echo %errorlevel% 255