Tag: C#的

C#线程真的可以caching一个值,并忽略其他线程上的值的变化吗?

这个问题不是关于种族条件,primefaces性,或为什么你应该在你的代码中使用锁。 我已经知道这些。 更新:我的问题不是“是否存在易失性内存的古怪”(我知道它的确如此),我的问题是“.NET运行时不会抽象出来,所以你永远不会看到它”。 请参阅http://www.yoda.arachsys.com/csharp/threads/volatility.shtml和第一个答案是string属性本身threadsafe? (他们真的是相同的文章,因为一个引用另一个。)一个线程设置一个布尔和另一个线程永远循环阅读该布尔 – 这些文章声称阅读线程可能会caching旧值,从来没有读取新值,所以因此您需要locking(或使用volatile关键字)。 他们声称以下代码可能会永久循环。 现在我同意locking你的variables是一个很好的习惯,但是我不能相信.NET运行库会真正忽略一个随着文章的声明而改变的内存值。 我理解他们对易失性存储器和非易失性存储器的讨论,我同意他们在非托pipe代码中有一个有效的观点,但我不能相信.NET运行时将不会正确地抽象出来,以便下面的代码你期望什么 文章甚至承认代码将“几乎肯定”的工作(虽然不能保证),所以我打电话给BS的索赔。 任何人都可以validation它是真的下面的代码不会总是工作? 任何人都可以得到一个案例(也许你不能总是重现),哪里有失败? class BackgroundTaskDemo { private bool stopping = false; static void Main() { BackgroundTaskDemo demo = new BackgroundTaskDemo(); new Thread(demo.DoWork).Start(); Thread.Sleep(5000); demo.stopping = true; } static void DoWork() { while (!stopping) { // Do something here } } }

成员函数结束时的const是什么意思?

C ++中的const关键字在成员函数的末尾(参数列表之后)是什么意思?

删除一个空指针是否安全?

假设我有以下代码: void* my_alloc (size_t size) { return new char [size]; } void my_free (void* ptr) { delete [] ptr; } 这安全吗? 或者必须将ptr为char*才能删除?

我应该避免“asynchronous无效”事件处理程序?

我知道使用fire-and-forget async void方法来启动任务通常被认为是一个坏主意,因为没有任何待处理任务的轨迹,处理可能在这种方法中抛出的exception是非常棘手的。 我通常应该避免async void事件处理程序? 例如, private async void Form_Load(object sender, System.EventArgs e) { await Task.Delay(2000); // do async work // … } 我可以像这样改写它: Task onFormLoadTask = null; // track the task, can implement cancellation private void Form_Load(object sender, System.EventArgs e) { this.onFormLoadTask = OnFormLoadTaskAsync(sender, e); } private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e) { […]

如何获得内存或在C#中使用

如何获得应用程序使用的可用RAM或内存?

计划寻找素数

我想find0和一个长variables之间的素数,但我不能得到任何输出。 该计划是 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication16 { class Program { void prime_num(long num) { bool isPrime = true; for (int i = 0; i <= num; i++) { for (int j = 2; j <= num; j++) { if (i != j && i % j == 0) { […]

你如何阅读C声明?

我听说过一些方法,但没有一个卡住了。 我个人尽量避免在C中的复杂types,并尝试将它们分解成组件types定义。 我现在正在维护一个所谓的“三星级程序员”的遗留代码,而且我正在阅读一些***代码[] []。 你如何阅读复杂的C声明?

在c#中获取鼠标位置

我如何获得鼠标位置? 我想要在屏幕位置。 我开始我的程序我想设置为当前的鼠标位置。 Location.X = ?? Location.Y = ?? 编辑:这必须发生在窗体创build之前。

未定义的引用“罪”

我有下面的代码(剥离到这个问题的基本知识): #include<stdio.h> #include<math.h> double f1(double x) { double res = sin(x); return 0; } /* The main function */ int main(void) { return 0; } 当用gcc test.c编译时,我得到了下面的错误,而且我无法弄清楚为什么: /tmp/ccOF5bis.o: In function `f1': test2.c:(.text+0x13): undefined reference to `sin' collect2: ld returned 1 exit status 但是,我已经写了各种testing程序,从main函数内部调用sin ,而且完美的工作。 我必须在这里做一些明显的错误 – 但是这是什么?

将包含命令行参数的string拆分为C#中的string

我有一个包含要传递给另一个可执行文件的命令行参数的单个string,我需要提取包含单个参数的string[],如果在命令行中指定了命令,那么C#将采用相同的方式。 当通过reflection执行另一个组件入口点时,将使用string[]。 有这个标准的function吗? 还是有一个首选的方法(正则expression式?)正确分裂参数? 它必须处理可能包含正确空格的'''分隔string,所以我不能只分割''。 示例string: string parameterString = @"/src:""C:\tmp\Some Folder\Sub Folder"" /users:""abcdefg@hijkl.com"" tasks:""SomeTask,Some Other Task"" -someParam foo"; 示例结果: string[] parameterArray = new string[] { @"/src:C:\tmp\Some Folder\Sub Folder", @"/users:abcdefg@hijkl.com", @"tasks:SomeTask,Some Other Task", @"-someParam", @"foo" }; 我不需要命令行parsing库,只是获取应该生成的String []的一种方法。 更新 :我不得不改变预期的结果,以匹配实际上由C#生成(删除多余的“在拆分string中的)