小编Nas*_*már的帖子

ShutDownListener中的TaskCanceledException

我们目前看到很多TaskCanceledException被抛弃MS.Internal.ShutDownListener.HandleShutDown.这开始于5月中旬,可能与.Net或Windows 10的一些更新有关.我们在旧版本(〜2岁)和我们软件的新版本中看到了它,它刚刚开始在所有版本中启动.我们的目标是.Net 4客户端配置文件与旧版本和.Net 4.5.1与更新版本.

完整的堆栈跟踪是:

位于System.Windows.Threading的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)上的TaskCanceledException. DispatcherOperation.Wait(时间跨度超时)在System.Windows.Threading.Dispatcher.InvokeImpl(的DispatcherOperation操作,的CancellationToken的CancellationToken,时间跨度超时)在System.Windows.Threading.Dispatcher.Invoke(动作回调的DispatcherPriority优先的CancellationToken的CancellationToken,时间跨度超时)在MS.Internal.WeakEventTable.OnShutDown()at MS.Internal.ShutDownListener.HandleShutDown(Object sender,EventArgs e)

问题是:导致这种情况的原因是什么?

现在,我们正在寻找找到根本原因的方法,并最终解决这个问题.当然,我们最终可以简单地抓住它,但这不是一个真正的解决方案.欢迎任何方向提示.我们希望更新此问题,因为我们可以获得更多洞察力,以便能够为以后遇到此类问题的人提供信息.

.net c#

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

何时以及为何在 C# 中使用别名或其类名?

为什么以及何时应该分别使用int, int16, int32, int64, double,string来代替Int, Int16, Int32, Int64, Double, String?我已经准备了很多关于此的文章,但仍然没有得到适当的解决方案。

c# oop

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

C#检查PropertyInfo的类型是否是原始的

是否可以检查存储的类型是否PropertyInfo是原始的?

例如,我想这样做:

 // from and to are both objects declared in the parameters.
 Type fType = from.GetType();
 Type tType = to.GetType();

 PropertyInfo[] fmpi = fType.GetProperties();
 PropertyInfo[] tmpi = tType.GetProperties();

 foreach(var pi in  tmpi)
 {
     if (pi.CanWrite)
     {
         var fpi = fmpi.SingleOrDefault(item => item.Name.ToLower() == pi.Name.ToLower());

         if (pi.GetType().IsPrimitive || pi.GetType() == typeof(string))
         {
             pi.SetValue(to, fpi.GetValue(from, null));
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

每当我执行此代码时,它都不会通过ifstatemenet.主要原因是每当我这样做pi.GetType()时都说它是一个PropertyInfo.这很明显,因为它被声明为PropertyInfo.但我希望你明白这个主意.

我还发现它pi.PropertyType.Name包含了属性的实际类型的名称.无论如何我可以IsPrimitive在这家酒店执行吗?如果没有,是否有任何工作让我这样做?

我检查了如何测试Type是原始的但是在这种情况下用户正在使用直接类型而我正在使用PropertyInfo.

c# system.reflection

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

JSON.NET - 制作属性以检查空字符串属性值

使用[JsonProperty(Required = Required.Always)]注释我的模型的属性,我可以检查属性值是否不为空。

对于字符串,我也想检查空值。在 Json.NET 中使用属性时,有没有办法检查字符串属性值是否为空?或者还有其他方法吗?

这个 JSON 应该会引起问题

{
  "Property1": "",
   ... 
}
Run Code Online (Sandbox Code Playgroud)

.net c# json json.net

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

FindAll - Predicate <TSource> vs Func <TSource,bool>

我很难理解为什么List<T>FindAll(...)方法不接受Func<TSource, bool>,而是坚持接受Predicate<TSource>.

因此,当我有一List本书时,我只想获得比10便宜的书.这个代码运行得很好.

  Predicate<Book> CheapBooksPredicate = b => b.Price < 10;
  var cheapBooksPredicate = books.FindAll(CheapBooksPredicate);
Run Code Online (Sandbox Code Playgroud)

但是当我换Predicate<TSource>Func<TSource, bool>

   Func<Book, bool> CheapBooksFunc = b => b.Price < 10;
   var cheapBooksFunc = books.FindAll(CheapBooksFunc);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

参数1:无法从'System.Func'转换为'System.Predicate'

我在这里失踪了什么?当两个Func<TSource, bool>Predicate<TSource>predicates.Predicate<TSource>应该是a的专用版本,Func它根据一组条件获取和计算一个值并返回一个布尔值,因此我可以在使用方面相互替换它们.

.net c#

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

标签 统计

c# ×5

.net ×3

json ×1

json.net ×1

oop ×1

system.reflection ×1