我有一个使用Visual Studio 2010构建的旧MVC应用程序.然后我使用Visual Studio 2013升级到MVC 5并升级了NuGet包.它构建,但是当我通过Visual Studio运行应用程序时,它无法找到主视图.我将其追溯到Global.asax并发现Application_Start从未被调用过,因此从未设置过路由.
我在这里找到了一些关于这个问题的问题,但没有一个解决方案对我有用.
这看起来很简单,但我无法找到解决方案.有任何想法吗?
我是这个线程的初学者,我已经两天撞墙了。我到处都读过Parallel.ForeEach会等到线程完成后再从ForEach中出来。我在这里告诉你那是一群你知道的东西。这只会按计划设置一堆任务,并退出ForEach。
所以我的问题是,如何使任务从计划的运行开始?在完成所有线程之前,我该如何保留在程序中?我在下面的这个示例中,它将只计划任务并退出程序。
顺便说一句,我从另一个StackOverflow帖子中偷走了加密部分,只是为了举例说明一项需要花费一些时间的任务。
编辑-建议我包括对粘贴的加密代码的引用,这是个好主意。我相信它最初来自微软,但是他们的答案在这里(/sf/answers/19144961/)。
编辑v2-我一直在玩这个,并在这里使用帮助(谢谢),我想出了:
Parallel.ForEach(tasks, new ParallelOptions { MaxDegreeOfParallelism = 4 }, task =>
{
task.Start();
task.Wait();
Console.WriteLine(task.Status);
});
Run Code Online (Sandbox Code Playgroud)
看起来“开始”和“等待”对此非常重要。使用这两个命令,它现在可以工作。我正在尝试使其运行在最多4个线程上,并且我很难确保确实如此。有什么建议么?我也希望这是处理一堆任务并将其推送到多个线程的正确方法。
class Program
{
static void Main(string[] args)
{
List<Task> tasks = new List<Task>();
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption()));
tasks.Add(new System.Threading.Tasks.Task(() => DoEncryption())); …Run Code Online (Sandbox Code Playgroud)