所以我被困在这个问题大约一个星期.我试图运行一个项目来接收TCP连接并启动SignalR Hub作为服务.两者都完美地将项目作为.exe文件运行.TCP部分可以完美地工作,但是我遇到了SignalR方面的问题.
原因最终是使用声明.
之前
using (WebApp.Start<SignalrStartup>(url))
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Server running on {0}", url); // was url
Console.WriteLine("ID\tMessage");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
后
WebApp.Start<SignalrStartup>(url);
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用Console.WriteLine()注释掉的代码来运行代码,因为我认为它可能会抛出一个异常,因为没有控制台输出到一次作为服务运行.这也不起作用,但也不能作为.exe文件工作,因为它需要Console.ReadLine()保持控制台打开,排序你需要它来保持HelloWorld.cs打开.一旦使用的包装器与控制台一起被移除,它将在.exe和服务中工作.
我已经读过,一旦你离开包装器,using语句会杀死它中的对象.但我不明白After bit代码如何在运行时保持.exe代码打开.有没有使用任何点使用或曾经我一直在使用它错了吗?
编辑
protected override void OnStart(string[] args)
{
Task.Factory
.StartNew(() => StartTCP())
.ContinueWith(t => StartSignalR());
}
Run Code Online (Sandbox Code Playgroud)
该调用是从该StartSignalR()方法进行的.
如何在存储库中为我的分支创建一个文件夹,以防止原始分支列表变得太长。文件夹至少允许它们变得可折叠,并且可以帮助按功能、错误、发布和修补程序的类型对分支进行分组。