我是Angular 2的新手.我对Angular 2在生产环境中的工作原理感到困惑.
在生产服务器中运行Angular 2应用程序的先决条件是什么?
是否可以在IIS服务器中部署应用程序或是否需要节点服务器?
在使用节点在开发机器中编译文件之后,我们是否需要将.js和.ts部署到生产中?
Visual Studio会对此代码发出警告('因为不等待此调用,在调用完成之前会继续执行当前方法').
static void Main(string[] args)
{
FireAndForget(); // <-- Warning CS4014
// Do something else.
}
static async Task FireAndForget()
{
// Do something (cannot throw).
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,在这种特殊情况下不等待任务是可以的,因为FireAndForget永远不会抛出异常.
我没有考虑使用pragma禁用警告,而是考虑将FireAndForget的返回类型从Task更改为void.这有效地使编译器沉默.
static async void FireAndForget() // <-- Task changed to void
{
// Do something (cannot throw).
}
Run Code Online (Sandbox Code Playgroud)
然而,根据Stephen Cleary的说法,应该避免使用'async void'方法,因此我不太清楚该怎么做.
如果方法不是设计为首先等待并且没有抛出异常,那么是否可以使用'async void'方法?
我学到了从池线程调用Task.Wait会导致线程饥饿死锁的困难方法.
根据这篇MSDN文章,在"死锁"一章中,我们应遵守这两条规则:
似乎唯一合法使用Task.Wait的地方是主要功能 - 我在这里夸大了一点,但你明白了.
为什么Task.Wait仍然是.NET框架的一部分,看它有多危险?