我试图抛出并捕获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的随机原因)然后抛出异常,但没有抓住并且程序停止.
我错过了什么吗?
我正在看这段代码
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()
).
两者有什么区别?
我正在创建一个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) 我开始在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
我对吗?
我找到了一些使用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) 当观众中的某个人问我如何锁定远程分支,防止其他人推送时,我正在对GIT进行介绍性演示.
我理解为什么一直在使用TFS的人对此感到疑惑,但有没有理由说明为什么需要在GIT中锁定远程存储库?如果是这样,哪些?
我正在运行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-lifecycle
makefile.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) 我使用的是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.这是关键字的正确行为吗?
是否可以编写一个返回对象属性的字符串值的函数?
如果我有一个名为apple的对象,它有一个名为peel的方法,我希望有一个方法在调用getAttributeName(apple.peel)时返回"peel".
我该怎么做?
我正在编写一些使用反射的代码,但我意识到数组的类型表现得有些令人惊讶.
当我尝试以正常方式创建数组时,如下所示:
Type[] params = new Type[2];
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说
此时类名无效
为什么这么说?Type与其他类型有何不同?