Tag: .net

System.Threading.Timer vs System.Threading.Thread.Sleep resolution – .NET Timer不使用系统时钟分辨率

问题:尽管OS时钟分辨率更精确,为什么System.Threading.Timer保持15ms的分辨率? 在没有繁忙的CPU等待的情况下,实现1ms定时事件解析的可行方法是什么? 再次强调: 在我的情况下,系统计时器的分辨率为1ms (与建议重复的问题相反)。 所以这不是系统计时器分辨率的问题。 因此,在所谓的重复问题中没有有用的信息。 背景:似乎.NET System.Threading.Timer 没有使用系统时钟分辨率 – 它保持了~15ms的分辨率。 尽管OS时钟(例如Sleep分辨率)更加精确。 在我的盒子上(当几乎空闲并且有4个核心可用时): >Clockres.exe ClockRes v2.0 – View the system clock resolution Copyright (C) 2009 Mark Russinovich SysInternals – www.sysinternals.com Maximum timer interval: 15.625 ms Minimum timer interval: 0.500 ms Current timer interval: 1.001 ms 输出我的快速测试: Sleep test: Average time delta: 2[ms] (from 993 […]

服务器返回一个地址以响应PASV命令,该命令与进行FTP连接的地址不同

System.Net.WebException:服务器返回一个地址以响应PASV命令,该命令与进行FTP连接的地址不同。 在System.Net.FtpWebRequest.CheckError() 在System.Net.FtpWebRequest.SyncRequestCallback(Object obj) 在System.Net.CommandStream.Abort(例外e) 在System.Net.FtpWebRequest.FinishRequestStage(RequestStage阶段) 在System.Net.FtpWebRequest.GetRequestStream() 在D:\ PROJEKTI \ BackupDB \ BackupDB \ Program.cs中的BackupDB.Program.FTPUploadFile(String serverPath,String serverFile,FileInfo LocalFile,NetworkCredential Cred):第119行 码: FTPMakeDir(new Uri(serverPath + “/”), Cred); FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverPath+serverFile); request.UsePassive = true; request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = Cred; byte[] buffer = new byte[10240]; // Read/write 10kb using (FileStream sourceStream = new FileStream( LocalFile.ToString(), FileMode.Open)) { […]

如何使用HashSet 作为字典键?

我希望使用HashSet作为Dictionary的键: Dictionary<HashSet, TValue> myDictionary = new Dictionary<HashSet, TValue>(); 我想从字典中查找值,以便包含相同项的两个不同的HashSet实例将返回相同的值。 HashSet的Equals()和GetHashCode()实现似乎没有这样做(我认为它们只是默认值)。 我可以重写Equals()以使用SetEquals()但是GetHashCode()呢? 我觉得我在这里错过了一些东西……

Lucene.net范围查询+突出显示

还有一个极端新手的另一个Lucene.net问题。 这一次,我发现使用包含范围和使用突出显示的查询时会遇到一个有趣的问题。 我是从内存中写的,所以请原谅任何语法错误。 我有一个假设的Lucene索引: ——————————————————— | date | text | ——————————————————— | 1317809124 | a crazy block of text | ——————————————————— | 1317809284 | programmers are crazy | ——————————————————— ** date is a unix timestamp …并且它们已经通过以下方式添加到索引中: Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document(); doc.Add(new Lucene.Net.Documents.Field(“text”, “some block of text”, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED, Lucene.Net.Documents.Field.TermVector.WITH_POSITIONS_OFFSETS)); doc.Add(new Lucene.Net.Documents.Field(“date”, “some unix timestamp”, […]

如何在Dynamic Linq中使用Enums?

我想在动态LINQ查询中使用枚举。 是否可能,如果,如何? 考虑下面的代码: using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Room aRoom = new Room() { Name = “a Room” }; Room bRoom = new Room() { Name = “b Room” }; Room cRoom = new Room() { Name = “c Room” }; […]

.NETreflection:查找使用的类型

我一直在努力解决这个问题。 我试图做的是在我正在处理的一些代码中构建一个如何使用对象的“映射”。 将其视为增强的查找用法。 显示这个的最简单方法是通过示例: public class MasterClass { Type1 type1; Type2 type2; Type3 type3; void InitializeData() { type1 = new Type1(this); type2 = new Type2(this); type3 = new Type3(this); } } public class Type1 { private MasterClass _master; public Type1(MasterClass master) { _master = master; } public void Something() { //use _master.type2 and _master.type3 here […]

无法在VS 2017 U1(15.3)中打开的项目中加载“Microsoft.Build.Framework.SdkReference”类型

在完成(显然是成功的)从VS 2017 15.1升级到15.3之后,我再也无法加载任何C#项目(无法打开现有,无法创建新项目)。 所有失败都有这个错误: 无法从程序集“Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”加载类型“Microsoft.Build.Framework.SdkReference”。 我找到了一个引用此问题的人参考RC版本的15.3,但没有其他人,所以我不知道我的环境可能导致这个问题。 我已经尝试清除缓存和用户数据,修复,完全卸载/重新安装,以及删除第三方组件。 我没有想法。 我在这里提供的信息非常多,所以我不知道从哪里开始。 我很感激任何想法,或者至少看看其他人是否遇到了同样的问题。

如何在我的JSON模型类中使用保留关键字作为标识符?

我之前从未使用过Web API,但我需要一个接受/返回JSON对象的Web服务,并且使用它似乎是一个合理的事情。 它看起来很简单(如果不是为了我的目的有点过分),但我需要处理的数据结构看起来像: { “values”:[“foo”, “bar”], “default”:”bar” } 所以我去制作一个Model对象: class DropDownValues { public string[] values { get; set; } public string default { get; set; } } 问题是默认似乎是受保护的关键字。 必须有一些方法来解决这个问题,对吧?

为什么XmlSerializer需要从IEnumerableinheritance的类型具有Add(System.Object)的实现?

我正在使用xml序列化,但现在遇到了一个我以前没见过的运行时错误。 “要成为XML可序列化的,从IEnumerableinheritance的类型必须在其inheritance层次结构的所有级别都具有Add(System.Object)的实现.ImageEditor.EffectOptions不实现Add(System.Object)” 通过运行时exception强制实现方法似乎有点奇怪,而不是编译时间错误,例如实现的接口缺少方法。 这是设计的吗? 这不应该通过某种类型的接口强制执行,如XmlSerializable等? 除此之外,我想知道序列化程序是否保证传递正确类型的值,我可以将其转换为类型,在我的例子中是EffectOption 。 或者我应该实现这个Add (object)方法来查看对象是否是EffectOption类型,如果没有抛出exception? 我之前没有实现过这个Add (object)方法,但是我的猜测是将它转换为EffectOption并将其添加到EffectOptions集合更安全。 编辑:这是类型本身: public class EffectOptions : IEnumerable { public List Options { get; private set; } //IEnumerable methods }

GroupBy并计算List中的唯一元素

我有一个只包含字符串的列表。 我喜欢做的是分组并返回一个计数。 例如: Foo1 Foo2 Foo3 Foo1 Foo2 Foo2 会导致Foo1:2,Foo2:3,Foo3:1。我已经尝试过Linq但是列表中有一个GroupBy可能会做的伎俩但是我把它搞砸了,无法想象使用:(