小编Dem*_*sch的帖子

验证异步方法中的参数

我正在写有相同方法的同步和异步版本类 void MyMethod(object argument)Task MyMethodAsync(object argument).在同步版本中,我通过简单检查验证参数

if (argument == null)
    throw new ArgumentNullException("argument");
Run Code Online (Sandbox Code Playgroud)

在异步方法中,相同的检查应该如何?

1)与同步方法相同

2)(第一次回答后更新)

if (argument == null)
    return new Task.Factory.StartNew(() => { throw new ArgumentNullException("argument"); });
Run Code Online (Sandbox Code Playgroud)

c# asynchronous

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

Activator.CreateInstance创建类型T的值而不是Nullable <T>

请看下面的示例代码

var genericNullableType = typeof(Nullable<>);
var nullableType = genericNullableType.MakeGenericType(typeof(bool));
var returnValue = Activator.CreateInstance(nullableType, (object)false);
Run Code Online (Sandbox Code Playgroud)

由于某种原因,returnValue变量将是类型bool而不是bool?.为什么这样,怎么可以避免?

UPD:这是我VS的截图 在此输入图像描述

c# activator

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

使用EPPlus生成电子表格时是否可以忽略Excel警告?

我使用C#和EPPlus在电子表格中的单个列中存储数字和非数字值的混合.当我用Excel打开电子表格时,它会在单元格中显示绿色三角形,其中数字值会显示"Number Stored as Text"的警告,并为特定单元格提供忽略它的选项.我可以从代码中执行此操作还是具有Excel特定功能?

c# excel epplus

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

绘制RichTextBox

我正在尝试在RichTextBox中绘制单词和段落的边框,但是当我打开UserPaint时,它不再绘制文本,而我的自定义绘画似乎有效.可能我只是忘了打开别的东西?这就是我所拥有的

public partial class RichTextBoxEx : RichTextBox
{
    public RichTextBoxEx()
    {
        InitializeComponent();
        SetStyle(ControlStyles.UserPaint, true);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        //Do some painting here
    }
}
Run Code Online (Sandbox Code Playgroud)

使用这个问题的信息对我没有帮助

c# richtextbox winforms

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

当我要求dotMemory强制进行垃圾收集时会发生什么情况

我使用dotMemory来分析我的应用程序,并且注意到以下行为:在代码内,有些地方我使用手动执行垃圾收集

GC.Collect();
GC.WaitForPendingFinalizers();
Run Code Online (Sandbox Code Playgroud)

在dotMemory内部,我发现这些点实际上已释放了内存,但是如果此后单击“ Force GC”,则会收集更多垃圾。他们这样做的方式是什么?为什么我的代码没有收集该内存,并且实现相同级别的收集有可能吗?

我附上了屏幕截图,您可以在其中看到第2代的dotMemory几乎减半在此处输入图片说明

我也尝试过执行多个收集,即

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
Run Code Online (Sandbox Code Playgroud)

即使它似乎回收了更多的内存,它也永远不会接近dotMemory的执行方式

.net c# garbage-collection

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

C# 是否存储对来自 TPL 的任务的引用

让我们假设我运行这样的代码

Task.Factory.StartNew(...).ContinueWith(...);
Run Code Online (Sandbox Code Playgroud)

我不存储两个创建的任务的引用,所以我可以确定它们不会在开始之前或执行过程中被处理吗?如果是,那么在哪里引用这些任务?

.net c# task-parallel-library

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

如何在 IL 代码中发出三元运算符

我正在尝试生成动态方法。假设我arg在堆栈中有 bool 值。我想调用一个方法,该方法接受intbool通过简单规则从该值转换的类型参数arg ? 1 : 0。对于一些示例代码,生成的 IL 代码如下:

//bool value is already pushed into stack
IL_003d:  brtrue.s  IL_0042
IL_003f:  ldc.i4.0
IL_0040:  br.s      IL_0043
IL_0042:  ldc.i4.1
IL_0043:  callvirt --methodName--
Run Code Online (Sandbox Code Playgroud)

发射时OpCodes.Brtrue_S以及OpCodes.Br_S如何正确识别要跳转到的偏移量?

c# il ilgenerator

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

构建错误MC1000'对象引用不设置为实例

我试图从VS 2012构建我的WPF项目,但在某些时候它给了我错误的消息,如下所示:

未知的构建错误.对象引用未设置为对象的实例.

然而,下次我试图建立它一切都很好.所以我继续编写代码并构建,一切都很好.然后我将所有内容提交给SVN并在TeamCity上进行构建.令人惊讶的是它失败了,日志中有一条消息:

[MarkupCompilePass1] C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFX.targets(269,9):error MC1000:未知的构建错误,'对象引用未设置为对象的实例.

我比手动运行TeamCity构建并成功.任何想法是什么原因以及如何预防?

UPD: 在第一次本地失败构建之前,我做的唯一事情就是重构我的项目树,即将一些WPF窗口从一个项目文件夹移动到另一个项目文件夹.

c# msbuild wpf visual-studio-2012

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

File.OpenRead 的缓冲区大小

如果您使用其中一个FileStream构造函数,您可以指定缓冲区大小(以字节为单位),但如果您使用则File.OpenRead不能。第二种情况下使用的缓冲区大小的默认值是多少?

.net c# io

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

Entity Framework Core 3 模拟 PARTITION BY

我正在尝试使用 EF Core 3 检索每个组的最新记录,但我想出的每个可能的 LINQ 查询都以InvalidOperationException异常结束Processing of the LINQ expression '...' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core

根据在 EF Core 2.2 中工作的一些答案,这个查询应该可以解决问题,但它没有

from lfv in dbo.ListingFlagValues
group lfv by lfv.ListingId into groups
select groups.OrderByDescending(x => x.Timestamp).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我尝试过的另一种选择是

db.ListingFlagValues.GroupBy(x => x.Listing)
  .Select(x => new { Group = x, MaxTimestamp = x.Max(y => y.Timestamp) })
  .SelectMany(x => x.Group.Select(y => new { y.ListingId, ValueId = y.NewFlagValueId, y.Timestamp, x.MaxTimestamp })) …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

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

如何检测 Bootstrap 模式关闭的方式

我将处理程序附加到 Bootstraphidden.bs.modal事件以检测模式何时关闭,但它可以通过多种方式关闭:

  1. 通过$('#modal').modal('hide')或显式关闭它$('#modal').modal('toggle')
  2. 单击模态的背景部分(如果允许);
  3. 通过数据属性,例如 data-dismiss="modal"

有没有办法检测使用了哪个选项?在hidden.bs.modal处理程序内部e.target似乎总是div#modal

javascript jquery bootstrap-modal bootstrap-4

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