Tag: C#的

C#DateTime.Now精度

我只是在做一些unit testing的时候遇到了一些与DateTime.UtcNow出乎意料的行为。 看起来,当你连续快速地调用DateTime.Now/UtcNow时,似乎给你的时间间隔长于同一个值,而不是捕获更精确的毫秒增量。 我知道有一个秒表类,可能更适合做精确的时间测量,但我很好奇,如果有人可以在DateTime中解释这种行为? 是否有DateTime.Nowlogging的官方精确度(例如,精确到50毫秒以内?)? 为什么DateTime.Now会比大多数CPU时钟所能处理的更精确? 也许它只是为最低公分母CPUdevise的? public static void Main(string[] args) { var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i=0; i<1000; i++) { var now = DateTime.Now; Console.WriteLine(string.Format( "Ticks: {0}\tMilliseconds: {1}", now.Ticks, now.Millisecond)); } stopwatch.Stop(); Console.WriteLine("Stopwatch.ElapsedMilliseconds: {0}", stopwatch.ElapsedMilliseconds); Console.ReadLine(); }

如何用backgroundworker更新GUI?

我花了整整一天的时间试图让我的应用程序使用线程,但没有运气。 我已经阅读了很多关于它的文档,但是我仍然有很多错误,所以我希望你能帮助我。 我有一个很耗时的方法调用数据库并更新GUI。 这一直发生(或大约每30秒)。 public class UpdateController { private UserController _userController; public UpdateController(LoginController loginController, UserController userController) { _userController = userController; loginController.LoginEvent += Update; } public void Update() { BackgroundWorker backgroundWorker = new BackgroundWorker(); while(true) { backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); backgroundWorker.RunWorkerAsync(); } } public void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { _userController.UpdateUsersOnMap(); } } 使用这种方法,我得到一个exception,因为背景工作不是和STA线程(但从我能理解这是我应该使用)。 我已经尝试了一个STA线程,并给了其他错误。 我认为这个问题是因为我尝试在进行数据库调用时更新GUI(在后台线程中)。 […]

在C#中运行时加载DLL

我想弄清楚如何在C#应用程序的运行时导入和使用.dll。 使用Assembly.LoadFile()我已经设法让我的程序加载dll(这部分是肯定工作,因为我能够得到与ToString())类的名称,但是我无法使用'输出'方法从我的控制台应用程序。 我正在编译.dll,然后将其移到我的控制台的项目。 CreateInstance之间有一个额外的步骤,然后才能够使用方法? 这是我的DLL中的类: namespace DLL { using System; public class Class1 { public void Output(string s) { Console.WriteLine(s); } } } 这里是我想要加载DLL的应用程序 namespace ConsoleApplication1 { using System; using System.Reflection; class Program { static void Main(string[] args) { var DLL = Assembly.LoadFile(@"C:\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\DLL.dll"); foreach(Type type in DLL.GetExportedTypes()) { var c = Activator.CreateInstance(type); c.Output(@"Hello"); […]

隐藏terminal上的密码input

我想在使用*写入密码时掩盖我的密码。 我使用Linux GCC代码。 我知道一个解决scheme是像这样使用getch()函数 #include <conio.h> int main() { char c,password[10]; int i; while( (c=getch())!= '\n');{ password[i] = c; printf("*"); i++; } return 1; } 但问题是GCC不包含conio.h文件,所以, getch()对我来说是没用的。 有没有人有解决scheme?

多个列表与IEnumerable.Intersect()交集

我有一个列表,我想find这样的路口: var list1 = new List<int>() { 1, 2, 3 }; var list2 = new List<int>() { 2, 3, 4 }; var list3 = new List<int>() { 3, 4, 5 }; var listOfLists = new List<List<int>>() { list1, list2, list3 }; // expected intersection is List<int>() { 3 }; 有没有办法用IEnumerable.Intersect()做到这一点? 编辑:我应该更清楚这一点:我真的有一个列表的清单,我不知道会有多less,上面的三个列表只是一个例子,我所拥有的实际上是一个IEnumerable<IEnumerable<SomeClass>> 解 感谢所有伟大的答案。 原来有四个选项可以解决这个问题: List […]

如何在C#中连接两个数组?

int[] x = new int [] { 1, 2, 3}; int[] y = new int [] { 4, 5 }; int[] z = // your answer here… Debug.Assert(z.SequenceEqual(new int[] { 1, 2, 3, 4, 5 })); – 现在我用 int[] z = x.Concat(y).ToArray(); 有一个更容易或更有效的方法?

为什么优化杀死这个function?

我们最近在大学做了关于几种语言的编程特辑的讲座。 讲师写下了以下function: inline u64 Swap_64(u64 x) { u64 tmp; (*(u32*)&tmp) = Swap_32(*(((u32*)&x)+1)); (*(((u32*)&tmp)+1)) = Swap_32(*(u32*) &x); return tmp; } 虽然我完全理解这在可读性方面也是非常糟糕的风格,但他的主要观点是这部分代码在生产代码中工作良好,直到他们启用了高优化级别。 那么,代码就什么都不做。 他说,编译器会优化variablestmp所有赋值。 但为什么会发生? 我明白,在某些情况下,variables需要被声明为volatile,这样编译器即使认为它们从来没有读过或写过,也不会碰到它们,但我不知道为什么会在这里发生。

铸造:(NewType)与对象作为NewType

可能重复: 在CLR中使用“as”关键字进行投射 这两个演员之间的区别究竟是什么? SomeClass sc = (SomeClass)SomeObject; SomeClass sc2 = SomeObject as SomeClass; 通常情况下,他们都应该是明确的转换到指定的types?

如何快速parsingC ++中的空格分隔花车?

我有一个数百万行的文件,每行有3个浮动空格分隔。 读取文件需要很多时间,所以我试图用内存映射文件来读取它们,只是发现问题不在于IO的速度,而在于parsing的速度。 我目前的parsing是采取stream(称为文件),并执行以下操作 float x,y,z; file >> x >> y >> z; 有人在堆栈溢出推荐使用Boost.Spirit,但我找不到任何简单的教程来解释如何使用它。 我试图find一个简单而有效的方法来parsing看起来像这样的一行: "134.32 3545.87 3425" 我真的很感激一些帮助。 我想使用strtok来分割它,但我不知道如何将string转换为浮动,我不太确定这是最好的方法。 我不介意解决scheme是否会提升。 我不介意这是否是最有效的解决scheme,但我相信有可能将速度提高一倍。 提前致谢。

使用JsonConvert.DeserializeObject将Json反序列化为C#POCO类

这是我简单的User POCO类: /// <summary> /// The User class represents a Coderwall User. /// </summary> public class User { /// <summary> /// A User's username. eg: "sergiotapia, mrkibbles, matumbo" /// </summary> public string Username { get; set; } /// <summary> /// A User's name. eg: "Sergio Tapia, John Cosack, Lucy McMillan" /// </summary> public string Name […]