c# - 如何替换 ReadLine 以退出我的应用程序?

标签 c# .net

我觉得问这个问题很愚蠢但是..
如何在不阻塞线程的情况下阻止我的应用程序退出?

目前它是一个控制台应用程序。但它将是一个“windows-app” (在 VS 中右键单击启动项目 -> 应用程序 -> 输出类型:(第一个)Windows 应用程序 - 不是商店应用程序。这只是为了拥有一个没有任何 GUI 的“隐形”应用程序。所以我不能使用Console.ReadLine() 稍后)

我现在在做什么

var app = WebApp.Start<OwinStartup>(url);
Console.ReadLine(); // wait until I press enter
app.Dispose();

我不想这样阻塞我的线程

while (isRunning)
{
    Thread.Sleep(1000);
}

我有什么可能实现这个目标?

最佳答案

声明一下,我对 WebApp 一点都不熟悉。但是,您可以使用 ManualResetEvent 来完成您想要的。

using (var app = WebApp.Start<OwinStartup>(url))
{
      ManualResetEvent stopHandle = new ManualResetEvent(false);//Might need to be true, I always get this mixed up.
      //Pass handle to app somehow
      stopHandle.WaitOne();
}

所以这段代码创建了应用程序,然后创建了一个 ManualResetEvent。然后将此事件传递给应用程序,然后线程停止并等待它被设置。在应用程序中,您可以随时设置它,您可以读取控制台输入,等待页面上的按钮被点击或进行其他操作。

我在这里假设 WebApp 类负责创建另一个线程或使用异步来处理网络请求。否则,您需要在另一个线程上运行该应用。

关于c# - 如何替换 ReadLine 以退出我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206949/

相关文章:

.net - 为什么 Apple 允许在 iPhone 上使用 .NET 而不允许使用 Flash?

c# - 在字符串 C# 中每隔第 n 个字符插入一个换行符和制表符

c# - .NET - 如何比较 2 个代码块之间的性能?

.NET 月份选择器控件

c# - 统一云构建 : post export method

c# - xsd2code 使用 xsd.exe 还是使用自己的代码生成算法?

c# - 如何在 C# 中创建 UserControl<T>?

c# - 从文本框中提取部分文本

C# 3.0 目标 2.0

c# - 将 null 作为构造函数/方法参数传递时出现编译错误 - c#