这个stackoverflow问题提出了一个关于使用NaN值对双数组进行排序的有趣问题.OP发布了以下代码:
static void Main(string[] args)
{
double[] someArray = { 4.0, 2.0, double.NaN, 1.0, 5.0, 3.0, double.NaN, 10.0, 9.0, 8.0 };
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Array.Sort(someArray);
Console.WriteLine("\n\n");
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
在.NET 3.5框架下运行时,数组按如下方式排序:
1,4,NaN,2,3,5,8,9,10,NaN
当您在.NET 4.0下运行它时,数组的逻辑排序更为一些:
NaN,NaN,1,2,3,4,5,8,9,10
我可以理解为什么它会在.NET 3.5中奇怪地排序(因为NaN不等于,小于或大于任何东西).我也可以理解为什么它会像在.NET 4.0中那样排序.我的问题是,为什么这个从3.5变为4.0?这个变化的Microsoft文档在哪里?
我有一个WPF应用程序,可以旋转几个线程.我在App.xaml.cs中定义了一个DispatcherUnhandledException事件处理程序,它显示详细的错误消息,每次UI线程遇到异常时都会调用此处理程序.问题在于子线程:它们未处理的异常永远不会得到处理.我该怎么做呢?
示例代码:
private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
MessageBox.Show("detailed error message");
}
private void Application_Startup(object sender, StartupEventArgs e)
{
//...
//If an Exception is thrown here, it is handled
//...
Thread[] threads = new Thread[numThreads];
for(int i = 0; i < numThreads; i++)
{
threads[i] = new Thread(doWork);
threads[i].Start();
}
}
private void doWork()
{
//...
//Exception thrown here and is NOT handled
//...
}
Run Code Online (Sandbox Code Playgroud)
编辑:一旦发生未处理的异常,我想显示带有堆栈跟踪的错误消息,然后退出应用程序.
c# wpf multithreading exception-handling unhandled-exception
我正在开发的一个开发人员正在开发一个程序来分析路面图像,以找到路面裂缝.对于他的程序找到的每个裂缝,它会在一个文件中生成一个条目,告诉我哪些像素组成了特定的裂缝.他的软件有两个问题:
1)它产生几个误报
2)如果他发现裂缝,他只能找到它的一小部分,并将这些部分表示为单独的裂缝.
我的工作是编写能够读取这些数据,分析数据并告知误报和实际裂缝之间差异的软件.我还需要确定如何将裂缝的所有小部分组合在一起.
我已经尝试了各种方法来过滤数据以消除误报,并且已经使用神经网络在有限的成功程度上将裂缝组合在一起.我知道会有错误,但截至目前,存在太多错误.有没有人对非AI专家有任何见解,以了解完成任务或了解更多信息的最佳方法?我应该阅读什么类型的书,或者我应该选择什么样的课程?
编辑我的问题更多的是关于如何注意我的同事数据中的模式并将这些模式识别为实际裂缝.这是我所关注的更高级逻辑,而不是低级逻辑.
编辑实际上,至少需要20个样本图像来准确表示我正在使用的数据.它变化很大.但我在这里,这里和这里都有一个样本.这些图像已经由我的同事处理.红色,蓝色和绿色数据是我必须分类的(红色代表暗裂纹,蓝色代表轻微裂纹,绿色代表宽/密封裂纹).
pattern-recognition artificial-intelligence image-processing data-analysis
我正在使用MVVM创建一个对话框,提示用户输入一个http:// URL到KML文件.当URL格式正确时,需要启用"确定"按钮,当URL格式不正确时,需要禁用该按钮.
现在按钮绑定到ICommand,CanExecute()的逻辑如下所示:
return !string.IsNullOrEmpty(CustomUrl);
Run Code Online (Sandbox Code Playgroud)
每次按键时都会引发命令的CanExecuteChanged事件,到目前为止它运行良好.
现在我想做一些实际的验证.我知道这样做的唯一方法如下:
try
{
var uri = new Uri(CustomUrl);
}
catch (UriFormatException)
{
return false;
}
return true;
Run Code Online (Sandbox Code Playgroud)
这不是bueno,特别是因为每次击键都会进行验证.我可以这样做,以便在用户点击OK按钮时验证URI,但我宁愿不这样做.除了捕获异常之外,还有更好的方法来验证URI吗?
更新: PowerShell 5似乎解决了以下错误.该错误仍然存在于3和4中.因此,除非您运行PowerShell 2或5,否则不要使用管道处理任何大型文件.
请考虑以下代码段:
function Get-DummyData() {
for ($i = 0; $i -lt 10000000; $i++) {
"This is freaking huge!! I'm a ninja! More words, yay!"
}
}
Get-DummyData | Out-Null
Run Code Online (Sandbox Code Playgroud)
这将导致PowerShell内存使用量无法控制地增长.执行Get-DummyData | Out-Null几次后,我看到PowerShell内存使用量一直达到4 GB.
根据ANTS Memory Profiler,我们在垃圾收集器的终结队列中有很多东西.当我打电话时[GC]::Collect(),内存从4 GB变为仅70 MB.因此,严格来说,我们没有内存泄漏.
现在,[GC]::Collect()当我完成一个长期的管道操作时,能够打电话对我来说还不够好.我需要在管道操作期间进行垃圾收集.但是,如果我尝试[GC]::Collect()在管道执行时调用...
function Get-DummyData() {
for ($i = 0; $i -lt 10000000; $i++) {
"This is freaking huge!! I'm a ninja! More words, yay!"
if ($i …Run Code Online (Sandbox Code Playgroud) 我有桌面软件开发的背景,我开始学习ASP.NET MVC.
在我的默认HomeController中,我有Index动作,其代码如下所示:
if (!Request.IsAuthenticated)
return RedirectToAction("Login", "Account");
Run Code Online (Sandbox Code Playgroud)
换句话说,将用户重定向到"/ account/login".然后,AccountController.Login操作将处理用户并在他成功登录后将其发送回HomeController.
这段代码对我来说很有趣,也许只是因为我习惯于在桌面软件中做不同的事情.如果我将登录操作的名称更改为"LogOn"怎么办?如果我完全删除AccountController并用其他东西替换它会怎么样?我将介绍一个新的bug,但我不会遇到编译器错误,我的单元测试可能也不会捕获它.由于我使用字符串来指定控制器和动作名称,因此重构和重新设计更有可能在整个地方破坏代码.
我想要的是这样的:
if (!Request.IsAuthenticated)
return RedirectToAction(() => AccountController.Login);
Run Code Online (Sandbox Code Playgroud)
但是我不确定这是否可能,或者它是否是最好的方法.
我是愚蠢的,还是有其他人有同样的问题?你怎么做才能绕过它?
我有一个矩形列表和一个点列表.我想构建一个LINQ查询,它将匹配点列表及其对应的矩形.像这样的东西:
// Does not compile
var matches = from rect in rectangles
join point in points on rect.Contains(point)
select new { rect, point };
Run Code Online (Sandbox Code Playgroud)
如何使用LINQ实现这样的功能?
编辑:
我的列表大小相同 - 我有一个点与一个矩形匹配,矩形不重叠.
然而,问题的关键不在于解决这个具体问题.一般来说,我感兴趣的是如何在除了'equals'之外的任何条件下加入两个列表.
我已经下载了Kendo UI核心开放和免费源,并试图在此演示中使用拆分器,但它不起作用,因为在js文件夹(从下载)kendo.all.min.js文件不存在.谁能告诉我该怎么办?我尝试使用kendo.core.min.js但它没有用.
我不想http://cdn.kendostatic.com/2014.1.416/js/kendo.all.min.js在我的项目中使用CDN URL .
提前致谢!
我喜欢C#,因为.NET框架的强大功能使得它很容易为Windows开发.但是我也喜欢标准的C++,主要是因为它让我对内存管理进行了微调.有没有办法让两全其美?是否有可以与.NET框架中丰富的库集竞争的C++库?或者有没有办法手动释放我从未使用过的.NET语言中的内存?或者是否可以在标准C++应用程序中使用.NET dll?我知道,我真的在这里伸展,但我相信魔法.
我有很多从360相机拍摄的图像,我希望能够在Silverlight 3中显示.它们不是常规的全景图像.拍摄图像的相机实际上会创建一个扭曲的jpeg,一旦缠绕在球体上作为纹理就会变形.我有桌面软件,可以查看图像(不只是左右,而是直接向上,向下等),我需要尝试在Silverlight中获得相同的功能.它与Google StreetView非常相似.
我认为我需要的是创建一个球体,将jpeg作为纹理包裹在球体上,然后将"相机"放入球体内.我怀疑在Silverlight中这是可能的,但也许有一种方法来模拟这个?
到目前为止,谷歌搜索没有提供任何东西.任何人都可以指出我正确的方向来弄清楚如何做到这一点?是否有任何现有项目可以做到这一点?
c# ×5
.net ×3
wpf ×2
3d ×1
asp.net-mvc ×1
c++ ×1
graphics ×1
image ×1
join ×1
kendo-ui ×1
linq ×1
magic-string ×1
memory ×1
powershell ×1
refactoring ×1
silverlight ×1
validation ×1