我已经编写了一款可以作为控制台应用程序运行良好的OWIN应用程序,但我想将其作为我写作的桌面应用程序的一部分。我可以找到启动OWIN应用程序的每个示例都将其作为控制台ap启动并运行直到按下某个键,如何将其移动到桌面应用程序中?
我正在考虑将启动代码放入一个线程中,并在无限循环中将其设置为关闭,这是最好的方法还是有替代方法?
目前我已经得到了这个:
class Program
{
static void Main(string[] args)
{
using (Microsoft.Owin.Hosting.WebApp.Start<Startup1>("http://localhost:9000"))
{
Console.WriteLine("Press [enter] to quit...");
Console.ReadLine();
}
}
}
这启动了作为控制台应用程序运行的OWIN服务器,但我希望能够将其包含在桌面应用程序中,并通过按下按钮来启动和停止它。我该如何重写这个呢?
答案 0 :(得分:1)
当您调用WebApp.Start(“some_addreess”)时,它会自动在后台线程中启动,您无需在线程中对其进行管理。只是保留了在退出或停止前需要关闭的一次性物品的参考。
示例代码可能如下所示
public partial class Form1 : Form
{
private IDisposable server;
public Form1()
{
InitializeComponent();
InitializeOwin();
}
private void InitializeOwin()
{
server = WebApp.Start<OwinStartup>("http://localhost:8989/");
}
/// <summary>
/// To be called before quit or stop button
/// </summary>
private void CallMeBeforeClose()
{
server.Dispose();
}
}
public class OwinStartup
{
//initialize owin startup class and do other stuff
public void Configuration(IAppBuilder appBuilder)
{
appBuilder.UseWelcomePage("/");
}
}