小编MaP*_*aPi的帖子

捕获AggregateException

我试图抛出并捕获AggregateException.我没有在C#上使用异常,但我发现的行为有点令人惊讶.

我的代码是:

var numbers = Enumerable.Range(0, 20);

try
{
    var parallelResult = numbers.AsParallel()
        .Where(i => IsEven(i));
    parallelResult.ForAll(e => Console.WriteLine(e));

}
catch (AggregateException e)
{
    Console.WriteLine("There was {0} exceptions", e.InnerExceptions.Count());
}
Run Code Online (Sandbox Code Playgroud)

它正在调用函数IsEven

private static bool IsEven(int i)
{
    if (i % 10 == 0)
        throw new AggregateException("i");
    return i % 2 == 0;
}
Run Code Online (Sandbox Code Playgroud)

抛出AggregateException.

我希望代码写入0,20范围内的每个偶数和"有1个例外"两次.

我得到的是打印的一些数字(它们是ForAll的随机原因)然后抛出异常,但没有抓住并且程序停止.

我错过了什么吗?

c# task-parallel-library

26
推荐指数
2
解决办法
3万
查看次数

使用AsSequential以保持顺序

我正在看这段代码

var numbers = Enumerable.Range(0, 20);
var parallelResult = numbers.AsParallel().AsOrdered()
    .Where(i => i % 2 == 0).AsSequential();

foreach (int i in parallelResult.Take(5))
    Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)

AsSequential()应该做排序的结果数组.实际上它在执行后被排序,但如果我删除了调用AsSequential(),它仍然被调整(自AsOrdered()).

两者有什么区别?

c# plinq task-parallel-library

9
推荐指数
1
解决办法
874
查看次数

ASP.NET无法摆脱"500-内部服务器错误"

我正在创建一个ASP.NET webage,它可以在CRM 2011中检索和插入数据.一切都很顺利,页面正在部署到服务器并且已准备好进行测试.

突然出现了一个新的变化,在我删除服务器中的文件并重新发布项目后(我知道它不需要,但仍然......)我再也无法访问该网站了.

我得到的只是500-内部服务器错误您正在寻找的资源存在问题,并且无法显示.

我尝试在页面标题上使用debug ="True"打开调试功能,我设置了

<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.5"/>
Run Code Online (Sandbox Code Playgroud)

在web.config文件中,我也尝试添加

<httpErrors errorMode="Detailed" />
Run Code Online (Sandbox Code Playgroud)

但他们都没有帮助获得更好的错误信息.

我的web.config文件是:

   <?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-ASP-20130619150943;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-ASP-20130619150943.mdf"/>
  </connectionStrings>
  <!--
    For a description of web.config changes for .NET 4.5 see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following …
Run Code Online (Sandbox Code Playgroud)

asp.net iis

7
推荐指数
2
解决办法
2万
查看次数

C#中的任务示例

我开始在C#中使用Tasks.我正在尝试执行此代码.

    private static void CreateSubtask() {

        Task<Int32[]> parent = Task.Run(() =>
        {
            var results = new Int32[3];
            new Task(() => results[0] = 0,
                TaskCreationOptions.AttachedToParent).Start();
            new Task(() => results[1] = 1,
                TaskCreationOptions.AttachedToParent).Start();
            new Task(() => results[2] = 2,
                TaskCreationOptions.AttachedToParent).Start();
            return results;
        });
        var finalTask = parent.ContinueWith(
           parentTask =>
           {
               foreach (int i in parentTask.Result)
                   Console.WriteLine(i);
           });
        finalTask.Wait();
    }
Run Code Online (Sandbox Code Playgroud)

finalTask​​仅在父Task完成后运行,父Task完成所有三个子节点完成.您可以使用它来创建非常复杂的Task层次结构,它将完成您指定的所有步骤.

我从执行中得到的是三行说:

0 0 0

我期待着他们

0 1 2

我对吗?

c# parallel-processing

7
推荐指数
2
解决办法
1万
查看次数

任务WaitAny条件

我找到了一些使用Task.WaitAny条件的代码.

Task<int>[] tasks = new Task<int>[3];

tasks[0] = Task.Run(() => { Thread.Sleep(2000); return 1; });
tasks[1] = Task.Run(() => { Thread.Sleep(1000); return 2; });
tasks[2] = Task.Run(() => { Thread.Sleep(3000); return 3; });

while (tasks.Length > 0) {
    int i = Task.WaitAny(tasks);
    Task<int> completedTask = tasks[i];

    Console.WriteLine(completedTask.Result);

    var temp = tasks.ToList();
    temp.RemoveAt(i);
    tasks = temp.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

代码工作正常,结果是2 1 3.

当我试图改变睡眠间隔时

tasks[0] = Task.Run(() => { Thread.Sleep(2000); return 1; });
tasks[1] = Task.Run(() => { Thread.Sleep(1000); return 2; });
tasks[2] = …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library

5
推荐指数
1
解决办法
4470
查看次数

你能解释为什么要在Git中锁定远程分支吗?

当观众中的某个人问我如何锁定远程分支,防止其他人推送时,我正在对GIT进行介绍性演示.

我理解为什么一直在使用TFS的人对此感到疑惑,但有没有理由说明为什么需要在GIT中锁定远程存储库?如果是这样,哪些?

git version-control tfs

5
推荐指数
1
解决办法
4661
查看次数

运行实体框架构建

我正在运行Entity Framework安装

build /t:RestorePackages
Run Code Online (Sandbox Code Playgroud)

但我得到这个输出:

Building C:\Github\EntityFramework-dev
dotnet-install: .NET SDK version 1.0.0-preview2-003121 is already installed.
Adding C:\Users\Admin\AppData\Local\Microsoft\dotnet\ to PATH
Using makefile: makefile.shade
fail: The given key was not present in the dictionary.
fail: Stack trace:
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Sake.Engine.Builder.BuilderBase`1.CallTarget(String name)
   at Sake.Engine.SakeEngine.Execute(Options options)
   at Sake.Engine.SakeEngine.Execute(String[] args)
   at Sake.Program.Main(String[] args)
Run Code Online (Sandbox Code Playgroud)

我玩了构建文件,显然发生错误的行在use-standard-lifecyclemakefile.shade中.如果我删除它,我会收到几个错误,比如

fail: Dynamic view compilation failed.
c:\Github\EntityFramework-dev\makefile.shade(10,30): error CS0103: The name 'E' does not exist in the current context
c:\Users\Admin\AppData\Local\Temp\7e99278fc8ad4d268bcdb4b2693a6f36-1.cs(92,9): error CS0103: The name 'BuildQuality' does not exist …
Run Code Online (Sandbox Code Playgroud)

entity-framework build

5
推荐指数
0
解决办法
64
查看次数

在C#中使用Volatile关键字

我使用的是Volatile关键字,但它的行为与预期的不同.

这是我的代码

private static volatile int _N = 0;



var up = Task.Run(() =>
{
    for (int i = 0; i < 1000000; i++)
        _N++;
});
for (int i = 0; i < 1000000; i++)
    _N--;
up.Wait();
Console.WriteLine(_N);
Run Code Online (Sandbox Code Playgroud)

_N是一个类变量.

我得到的是每次都有一个不同的数字,好像没有使用关键字volatile.这是关键字的正确行为吗?

c# task-parallel-library

1
推荐指数
1
解决办法
351
查看次数

在C#中将属性名称作为字符串获取

是否可以编写一个返回对象属性的字符串值的函数?

如果我有一个名为apple的对象,它有一个名为peel的方法,我希望有一个方法在调用getAttributeName(apple.peel)时返回"peel".

我该怎么做?

c# reflection

0
推荐指数
1
解决办法
175
查看次数

创建一个类型数组

我正在编写一些使用反射的代码,但我意识到数组的类型表现得有些令人惊讶.

当我尝试以正常方式创建数组时,如下所示:

Type[] params = new Type[2];
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说

此时类名无效

为什么这么说?Type与其他类型有何不同?

c# reflection

0
推荐指数
1
解决办法
163
查看次数