我试图使用Rx异步处理一些任务,例如
var list = Enumerable.Range(0, 100)
.ToObservable()
.SelectMany(x => Observable.Start(() => {
Console.WriteLine("Processing {0} ...", x);
Thread.Sleep(100 * x % 3);
if (x > 90) {
Console.WriteLine("Procesing exception {0} > 90", x);
throw new Exception("Value too large");
}
Console.WriteLine("Processing {0} completed.", x);
return x;
}))
.Subscribe(
x => { Console.WriteLine("Next [{0}]", x); },
e => {
Console.WriteLine("Exception:");
Console.WriteLine(e.Message);
},
() => { Console.WriteLine("Complete"); }
);
Run Code Online (Sandbox Code Playgroud)
我对此代码的问题是异常未传递给订阅者.所以,经过大量的尝试,我放弃了,并决定问这个简单的问题:
如何处理SelectMany
语句中异步方法中引发的异常?
为了说清楚,最终的实现是一个同步的函数调用,可能会或可能不会抛出异常.目标是将其传递给订户,以便可以进一步处理(在特定情况下,将向用户显示消息).
编辑
我将我的发现归结为一个答案,以便我可以将这个问题标记为已回答.就个人而言,我不同意自我回答......但有时没有别的办法,所以很抱歉.
很久以前,我们为客户编写了C#.NET 1.1应用程序,在办公室搬迁和裁员过程中,源代码未检入Source Safe.
客户现在报告了一个问题,我们不想从头开始重写应用程序.
我相信我们应该能够通过反编译可执行文件来获取源代码.任何人都可以推荐一个好的工具(最好是免费的).
当我们首先编写应用程序时,我不认为反编译会有任何法律问题,但如果我错了请纠正我.
我找到了一个快速的项目,我认为这对于学习F#是完美的.然而,由于某种原因,我无法将我的大脑包裹起来.经过几个小时的教程,甚至一些电影,我仍然只是......不明白.
所以我想使用Enterprise Manager"Generate Scripts"开始在工作中对我们的存储过程进行版本控制,并希望删除脚本日期.我放弃了,并在C#中做到了,但现在我真的很好奇,并希望有一些见解.
我不是空手而归,这是我的C#代码:
string path = @"C:\Subversion\CompanyName\SQL\DBName";
string fileSpec = "*.sql";
string pattern = @"Script Date: \d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}";
string replace = "Script Date: ";
foreach (var file in Directory.EnumerateFiles(path, fileSpec))
{
string content = File.ReadAllText(file);
content = Regex.Replace(content, pattern, replace);
File.WriteAllText(file, content, Encoding.Unicode);
}
Run Code Online (Sandbox Code Playgroud)
我猜在F#中有一些很酷的2-3线解决方案...我很乐意看到它.
Thx的提示!我更新了它以匹配下面的内容,使视觉比较更具启发性.下面还有很棒的评论.
我想展示从一段完全相同的代码生成的汇编程序代码.例如:
int a = 100;
int b = 50;
int c = a + b;
Run Code Online (Sandbox Code Playgroud)
我正在为我的团队在工作中做一个小型的入门课程,人们已经开始对性能等问题,并希望能够向他们展示这个例子.
Red Gate Ant Profiler或Reflector等工具如何将IL转换为C#或VB.NET代码?
我最近注意到Red Gate Ant Profiler不生成与最初编写的源代码相同的源代码.
它产生了一个while
我用过的循环foreach
.
这让我想到了.我在Reflector中打开了Reflector.exe,但是他们的代码大多数(并非全部)都是混淆的.
我有一个严重的问题,我的硬盘昨天崩溃了,我有很多项目。我丢失了大部分,但我恢复的都是我发送给客户端的所有调试文件夹(其中大部分是桌面应用程序)。我无法恢复大部分工作的代码,但我确实有调试文件夹,我的问题是有什么方法可以从中恢复我的代码。我相信有些人你会在过去经历过,如果你有任何关于这方面的信息,请帮助。
调试文件夹中的文件:示例我制作应用程序苹果
apple.exe type=application
apple.pdb type=PDBFIle
apple.vshost type=Application
apple.vshost.exe.mainfest type=MANIFEST File
Run Code Online (Sandbox Code Playgroud)
附加信息:
我的笔记本电脑硬盘坏了,所以我目前将它用作另一台笔记本电脑的 USB 驱动器。我有 3 个分区,但现在我看到 4 个 i,j,k,l 。其中一个曾经是我的 D: 驱动器工作正常,我看到它显示 150 GB 中有 72 GB 可用。其余的他们只是没有信息,当我在几分钟内没有点击它们时,它会说格式化驱动器等......如果你知道如何解决那会很棒。
谢谢