小编Gle*_*eno的帖子

.NET 4.5 beta中FatalExecutionEngineError的原因是什么?

以下示例代码自然发生.突然间,我的代码成了一个非常令人讨厌的FatalExecutionEngineError异常.我花了30分钟试图隔离并最小化罪魁祸首样本.使用Visual Studio 2012作为控制台应用程序对此进行编译:

class A<T>
{
    static A() { }

    public A() { string.Format("{0}", string.Empty); }
}

class B
{
    static void Main() { new A<object>(); }
}
Run Code Online (Sandbox Code Playgroud)

应该在.NET framework 4和4.5上产生此错误:

FatalExecutionException截图

这是一个已知的错误,原因是什么,我可以做些什么来减轻它?我目前的工作是不使用string.Empty,但我是在吠叫错误的树吗?更改有关该代码的任何内容使其按预期运行 - 例如删除空的静态构造函数A,或将类型参数更改objectint.

我在笔记本电脑上尝试了这个代码并没有抱怨.但是,我确实尝试了我的主应用程序,它也在笔记本电脑上崩溃了.在减少问题的时候,我必须把一些东西弄错了,我会看看能否弄清楚那是什么.

我的笔记本电脑使用与上面相同的代码崩溃,使用框架4.0,但主要崩溃,即使是4.5.两个系统都使用VS'12和最新更新(7月?).

更多信息:

  • IL代码(已编译的Debug/Any CPU/4.0/VS2010(不是那个IDE应该重要吗?)):http://codepad.org/boZDd98E
  • 没有看到VS 2010与4.0.没有/没有优化,不同的目标CPU,附加/未附加的调试器等崩溃 - Tim Medora
  • 如果我使用AnyCPU,2010年崩溃,在x86中很好.使用Platform Target = AnyCPU在Visual Studio 2010 SP1中崩溃,但在Platform Target = x86时很好.这台机器也安装了VS2012RC,因此4.5可以进行就地更换.使用AnyCPU和TargetPlatform = 3.5然后它不会崩溃所以看起来像Framework中的回归.- colinsmith
  • 无法在带有4.0的VS2010中的x86,x64或AnyCPU上重现.- 富士
  • 只发生在x64,(2012rc,Fx4.5) - Henk Holterman
  • Win8 RP上的VS2012 …

c# clr

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

需要一种按日期对100 GB日志文件进行排序的方法

所以,由于一些奇怪的原因,我最终得到一个100GB的未分类日志文件(实际上它是部分排序的),而我试图应用的算法需要排序数据.日志文件中的一行看起来像这样

data <date> data data more data
Run Code Online (Sandbox Code Playgroud)

我可以在工作站上访问C#4.0和大约4 GB的RAM.我认为合并 - 某种类型在这里最好,但是我自己实现这些算法还不够 - 我想问一下我是否可以采取某种捷径.

顺便说一句,解析日期字符串DateTime.Parse()非常慢,占用了大量的CPU时间 - chugging -rate几乎是10 MB /秒.有比以下更快的方式吗?

    public static DateTime Parse(string data)
    {            
        int year, month, day;

        int.TryParse(data.Substring(0, 4), out year);
        int.TryParse(data.Substring(5, 2), out month);
        int.TryParse(data.Substring(8, 2), out day);

        return new DateTime(year, month, day);
    }
Run Code Online (Sandbox Code Playgroud)

我写道,为了加快速度DateTime.Parse(),它确实运行良好,但仍然需要大量的循环.

请注意,对于当前的日志文件,我也对小时,分钟和秒感兴趣.我知道我可以使用格式提供DateTime.Parse(),但这似乎并没有加快它的速度.

我正在寻找正确方向的推动,提前谢谢.

编辑:有些人建议我使用字符串比较来比较日期.这适用于排序阶段,但我确实需要解析算法的日期.我仍然不知道如何在4GB的免费RAM上对100GB文件进行排序,而无需手动操作.

编辑2:嗯,多亏了我使用windows排序的一些建议,我发现Linux上有类似的工具.基本上你叫sort,它会为你修复一切.正如我们所说,它正在做一些事情,我希望它能尽快结束.我正在使用的命令是

sort -k 2b 2008.log > 2008.sorted.log
Run Code Online (Sandbox Code Playgroud)

-k指定我要对第二行进行排序,第二行是通常YYYY-MM-DD hh:mm:ss.msek格式的日期时间字符串.我必须承认,man-pages缺乏解释所有选项,但我通过运行找到了很多例子info coreutils …

c# sorting date-sorting

33
推荐指数
5
解决办法
9364
查看次数

将整个SQL Azure数据库下载为单个文件

Azure中是否有设施来获取数据库的副本?或者更确切地说,分离mdf并将其作为文件?有时我会在云中创建一个数据库,它会持续一段时间,然后我想将其删除并归档.我当前的rutine使用SQL Azure迁移向导将数据库复制到本地Express实例,然后我将其分离并放在一个安全的地方.

编辑 有趣的是我的选择方法这次抛出异常.所以它远非理想.

azure-sql-database

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

如何从WPF TextBlock中删除其他填充?

默认情况下,WPF TextBlock似乎应用了额外的顶部和底部填充.我希望事实并非如此.

  • 我已经尝试设置负填充,但有一个例外:

    0,-10,0,0'不是属性'Padding'的有效值.

  • 我试过设置LineHeight属性,没有明显效果.

这就是TextBlock在Blend中的外观.我用栗色红色标记了有问题的部分.

红色区域应该被删除

c# wpf xaml textblock

27
推荐指数
3
解决办法
9713
查看次数

异步一直向下?

试图理解新的异步/等待模式,我有一个问题,我找不到答案,即如果我应该用异步装饰我的方法,如果我打算从其他异步函数调用这些方法,或只是返回Tasks在适当情况下?

换句话说,这些A,B或C类中哪一个最好,为什么?

class A<T>
{
      public async Task<T> foo1() //Should be consumed
      {
          return await foo2();
      }

      public async Task<T> foo2() //Could be consumed
      {
          return await foo3();
      }

      private async Task<T> foo3() //Private
      {
          return await Task.Run(...);
      }
}

class B<T>
{
      public async Task<T> foo1() //Should be consumed
      {
          return await foo2();
      }

      public async Task<T> foo2() //Could be consumed
      {
          return await foo3();
      }

      private Task<T> foo3() //Private
      {
          return Task.Run(...);
      }
}

class C<T> …
Run Code Online (Sandbox Code Playgroud)

c# async-await c#-5.0

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

使用foreach迭代IQueryable会导致内存不足异常

我正在使用foreach/IQueryable和LINQ-to-SQL迭代一个小的(~10GB)表.看起来像这样:

using (var conn = new DbEntities() { CommandTimeout = 600*100})
{
     var dtable = conn.DailyResults.Where(dr => dr.DailyTransactionTypeID == 1);
     foreach (var dailyResult in dtable)
     {
        //Math here, results stored in-memory, but this table is very small. 
        //At the very least compared to stuff I already have in memory. :)
     }
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio调试器在foreach循环的基础上短暂地抛出一个内存不足的异常.我假设dtable的行没有被刷新.该怎么办?

c# linq linq-to-sql

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

Random(int seed)保证什么?

我正在开发一个项目,它依赖于为更大的集合随机分配用户(没有任何花哨,只是统一)的子集.每个用户都有一个从同构到整数的唯一标识符.据我所知,有两种方法可以做到这一点.

  1. 在用户和上述较大集合的键控元素之间创建数据库联结表,并为每个用户创建一次函数.这对我的需求来说有点不切实际,所以我宁愿这样做......
  2. 在运行时,通过类似的函数确定子集,但使用唯一的用户ID作为种子值,并将该集合放在内存中.下次需要它时,从更大的一组再创建它.

所以我的问题是,如果我使用.NET Random对象创建第二个使用user-id作为种子值的函数,Microsoft是否保证将来不会更改Random算法?即所有新的Random(n)的Next()序列在所有机​​器上都会永远相同吗?

或者,我可以创建自己的随机生成器,并将其与我的代码打包.事实上,这是我可能会做的,但我仍然很想知道答案.

.net c# random

14
推荐指数
2
解决办法
1071
查看次数

C#.NET框架的哪些部分实际上是语言的一部分?

我想知道哪些部分System是语言功能(核心组件),哪些部分只是有用的填充物,但并非绝对必要.我可能会对这里的措辞不满意,所以让我举一个例子说明我的意思.

考虑System.Console上课它显然是用于特定事物的东西.从本质上讲,这个东西可以很好地运行Windows /当前操作系统的功能.这不是我所说的语言的核心组成部分.

另一方面,采取System.IDisposable界面.那件事显然非常重要,因为没有它,这using()句话就没用了.类需要实现此特定接口才能启动语言功能.

我可以假设这mscorlib是负责任的一方.快速浏览一下Object explorer,可以看出它确实包含了许多我认为是核心的组件,同时它将Console类放入System命名空间,这只是填充程序.

将填充和特定于语言的对象放入同一命名空间的概念等同于它们,但为了更深入地理解C#,我想知道哪个是哪个.所以,我正在寻找C#的核心组件列表.我假设某个地方有一个方便的参考,但由于我在谷歌讲座期间睡着了,我无法形成正确的查询来找到它.

提前致谢.

很久以后编辑我读了这篇 Lippert博客文章,它有点相关.有趣的是,foreach构造实际上并不需要IEnumerable接口来实现功能.

c#

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

实体框架4.1 DbSet重新加载

我正在使用一个DbContext场景实例在WPF应用程序中本地隐藏数据库的整个副本.我听说这是不好的做法,但我的数据库很小,我需要在应用程序运行时在本地完整复制它.

一个扩展方法IQueryable,Load()让我预加载一个元素DbSet<>,这样我就可以将东西绑定到Local属性了DbSet<>.数据库中的数据变化很快,所以我想SaveChanges()重新加载所有内容,甚至是已经跟踪过的对象.Load()再次调用该方法不会更新已加载的已跟踪但未标记为已更改的项目.

重新加载预装物品的首选方法是DbSet<>什么?在我的脑海中,我只能想到调用SaveChanges(),然后遍历所有条目并将跟踪和原始值都设置为数据库中的当前值,然后Load()是可能添加的任何新对象.在我的场景中,不可能删除对象,但从长远来看,我可能不得不支持删除项目.这似乎不对,应该有办法放弃一切并重新加载.看起来更容易删除我的上下文并重新开始,但是WPF中的所有元素都已经绑定了Local´ObservableCollection<>,这只是弄乱了界面.

c# entity-framework-4.1

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

BULK INSERT后检查FK约束

我有几个大数据集(~O(1TB)),我想将其导入我的数据库.我BULK INSERT用来将数据导入临时表,然后使用SELECTINSERT INTO用数据填充我的真实表.这是因为我想改变某些东西的顺序,并将一些数据文件拆分成逻辑表.如果不需要此功能,我只需BULK INSERT直接进入目标表.

我想检查是否已强制执行所有外键约束.如果我在导入阶段进行标记BULK INSERT,CHECK_CONSTRAINTS则导入过程会减慢为爬网.

事后是否有命令要这样做?我对SQL Server和数据库的熟悉程度非常有限.

提前致谢.

编辑:

推荐阅读:MSDN文章

sql sql-server

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