Tag: C#的

Thread.Sleep(TimeSpan)有多准确?

我遇到了一个间歇性失败的unit testing,因为时间已经不是我所期望的了。 这个testing是什么样子就是一个例子: Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); TimeSpan oneSecond = new TimeSpan(0, 0, 1); for(int i=0; i<3; i++) { Thread.Sleep(oneSecond); } stopwatch.Stop(); Assert.GreaterOrEqual(stopwatch.ElapsedMilliseconds, 2999); 大多数情况下,这个过程至less失败了一次失败,因为: 预计:大于或等于2999但是:2998 我不明白怎么可能less于3秒。 Thread.Sleep是否存在准确性问题,或者是我不知道的秒表? 就像下面一些问题的更新一样。 被unit testing的场景是一个类允许一个人调用一个方法来执行一些操作,如果它失败了,等一下再调用这个方法。 上面显示的testing只是近似发生的事情。 说我想调用一个方法DoSomething()…但是,如果DoSomething()引发exception,我希望能够重试调用它最多3次,但每次尝试之间等待1秒。 在这种情况下,unit testing的目的是validation当我们要求3次重试,每次重试之间等待1秒钟,总时间大于3秒。

分割错误,大arrays

#include <stdio.h> #define N 1024 int main(){ int i, j; int a[N][N]; int b[N][N]; for (i=0;i<N;i++){ a[i][i]=i; b[i][i]=i; } for (i=0;i<N;i++) for(j=0;j<N;j++) { printf("%d", a[i][j]); printf("%d", b[i][j]); } return 0; } 这个程序是分段错误的原因,但是如果我将N定义为1023,程序将正常工作。 为什么会发生?

从用户input中读取一个整数

我正在寻找的是如何读取用户从命令行(控制台项目)给出的整数。 我主要知道C ++,并开始了C#path。 我知道,Console.ReadLine(); 只需要一个字符/string。 所以总之我正在寻找这个整数版本。 只是为了让你知道我在做什么: Console.WriteLine("1. Add account."); Console.WriteLine("Enter choice: "); Console.ReadLine(); // Needs to take in int rather than string or char. 我一直在寻找这一点。 我发现了很多C但不是C#。 但是,我发现在另一个网站上有一个线程,build议从char转换为int。 我相信必须有比转换更直接的方式。

Qt中的C ++ SIGNAL到QML SLOT

我想发送一个信号从C ++到我的QML文件中的一个槽。 我已经得到它没有和原始types参数工作,但如果我想发送一个QString到我的QML插槽,我会在连接时出错。 我在main.cpp连接 QObject *contentView = rootObject->findChild<QObject*>(QString("contentView")); QObject::connect(&myObj, SIGNAL(finishedGatheringDataForItem(QString)), contentView, SLOT(updateViewWithItem(QString))); 我的qml文件的相关部分 Rectangle { objectName: "contentView" function updateViewWithItem(string) { console.log('got some Items'); } // slot } 错误: Object::connect: No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)

每N个字符/数字分割一个string/数字?

我需要将一个数字分成几个部分,例如: 32427237需要成为324 272 37 103092501需要变成103 092 501 我相信我可以只是为了旁边的数字,但我相信有一个更有效的方法,因为我不想错过这些数字的字符 – 数字本身可以是任何长度,所以如果数字是1234567890我想把它分成这些部分123 456 789 0 我已经看到了其他语言的例子,如Python等,但我不明白他们足够好,以将它们转换为C# – 循环字符,然后在第三个获取前一个,然后该索引获取string的部分可能做这项工作,但我愿意提出如何更好地完成这项工作的build议。

Parameters.Add和Parameters.AddWithValue之间的区别

我读了这里的MSDN文档和示例,并且我知道Paramters.Add调用的正确语法是: command.Parameters.Add("@ID", SqlDbType.Int); command.Parameters["@ID"].Value = customerID; 您必须指定参数名称, SqlDbType和值与.Value 。 现在,一个Parameters.AddWithValue调用的正确语法是: command.Parameters.AddWithValue("@demographics", demoXml); 单行并跳过Type部分。 我的问题是:当我这样做的时候, command.Parameters.Add("@demographics", demoXml); // .Add method with .AddWithValue syntax 我没有得到任何编译错误,甚至更怪,当代码执行时,一切似乎正常工作?

将图像path转换为base64string

如何将图像转换为C#中的base64string? 例如,我有图像C:/image/1.gif的path,并希望data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD..返回。

std ::队列迭代

我需要遍历std::queue 。 www.cplusplus.com说: 默认情况下,如果没有为特定的队列类指定容器类,则使用标准容器类模板deque。 那么我能以某种方式进入队列的底层deque并迭代它吗?

有什么办法可以在不closuresBaseStream的情况下closuresStreamWriter?

我的根本问题是,当在StreamWriter上using调用Dispose时,它也会处理BaseStream (与Close相同的问题)。 我有一个解决方法,但你可以看到,它涉及复制stream。 有没有办法做到这一点,而不复制stream? 这样做的目的是将string(最初从数据库中读取)的内容转换为stream,以便第三方组件可以读取该stream。 注意 :我无法更改第三方组件。 public System.IO.Stream CreateStream(string value) { var baseStream = new System.IO.MemoryStream(); var baseCopy = new System.IO.MemoryStream(); using (var writer = new System.IO.StreamWriter(baseStream, System.Text.Encoding.UTF8)) { writer.Write(value); writer.Flush(); baseStream.WriteTo(baseCopy); } baseCopy.Seek(0, System.IO.SeekOrigin.Begin); return baseCopy; } 用作 public void Noddy() { System.IO.Stream myStream = CreateStream("The contents of this string are unimportant"); My3rdPartyComponent.ReadFromStream(myStream); […]

datetime.parse并使其以特定的格式工作

我有一个XML格式的date时间: 20080916 11:02 如在 yyyymm hh:ss 我怎样才能得到datetime.parse函数拿起这个? 即parsing它没有错误? 干杯