Tag: C#的

在.NET中创build一个阻塞队列<T>?

我有一个场景,我有多个线程添加到一个队列和多个线程从同一个队列读取。 如果队列达到特定的大小, 所有填充队列的线程将被阻塞,直到从队列中删除一个项目。 下面的解决scheme是我现在使用的,我的问题是:如何改进? 有没有一个对象已经在我应该使用的BCL中启用这种行为? internal class BlockingCollection<T> : CollectionBase, IEnumerable { //todo: might be worth changing this into a proper QUEUE private AutoResetEvent _FullEvent = new AutoResetEvent(false); internal T this[int i] { get { return (T) List[i]; } } private int _MaxSize; internal int MaxSize { get { return _MaxSize; } set { _MaxSize […]

Eclipse CDT C ++ 11 / C ++ 0x支持

Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2 这是一个C ++ 11代码的例子: auto text = std::unique_ptr<char[]>(new char[len]); Eclipse编辑器抱怨: Function 'unique_ptr' could not be resolved Makefile编译工作正常。 如何让Eclipse停止抱怨这类错误?

dependency injection(DI)“友好”库

我正在思考一个C#库的devise,这将有几个不同的高级function。 当然,这些高级函数将尽可能地使用SOLID类devise原则来实现。 因此,可能会有定期直接使用消费者的类别,以及那些更常见的“最终用户”类别的“支持类别”。 问题是,devise库的最佳方式是什么? DI不可知论 – 尽pipe为一个或两个常见DI库(StructureMap,Ninject等)添加基本的“支持”似乎是合理的,但我希望消费者能够使用任何DI框架的库。 非DI可用 – 如果图书馆的消费者没有使用DI,图书馆应该尽可能地容易使用,从而减less用户为创build所有这些“不重要”的依赖而必须做的工作量他们想要使用的“真实”类。 我目前的想法是为通用的DI库(例如,一个StructureMapregistry,一个Ninject模块)以及一个非DI的集合类或工厂类提供一些“DI注册模块”,并且包含与这些less数工厂的耦合。 思考?

malloc()和free()如何工作?

我想知道如何malloc和free工作。 int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } 如果答案是在记忆层面,如果可能的话,我会很感激。

如何以及何时使用`async`和`await`

从我的理解, async和await的主要事情之一是使代码易于编写和读取 – 但使用它们相当于产卵后台线程来执行长期的逻辑? 我目前正在尝试最基本的例子。 我在内部添加了一些评论。 你能为我澄清吗? // I don't understand why this method must be marked as `async`. private async void button1_Click(object sender, EventArgs e) { Task<int> access = DoSomethingAsync(); // task independent stuff here // this line is reached after the 5 seconds sleep from // DoSomethingAsync() method. Shouldn't it be reached immediately? […]

如何确定一个进程内部的CPU和内存消耗?

我曾经从运行的应用程序中确定以下性能参数: 可用虚拟内存总量 当前使用的虚拟内存 我的进程当前使用的虚拟内存 可用RAM总量 目前使用的RAM 目前我的进程使用的RAM 当前使用的CPU百分比 当前由我的进程使用的CPU 代码必须在Windows和Linux上运行。 尽pipe这似乎是一个标准任务,但在手册(WIN32 API,GNU文档)以及Internet上find必要的信息花了我好几天,因为关于这个主题的信息太多不完整/不正确/过时在那里发现。 为了避免别人经历同样的麻烦,我认为把所有分散的信息加上我在这里试验和发现的错误都集中在一个地方是个好主意。

ASP.NET MVC – 附加types“MODELNAME”的实体失败,因为另一个相同types的实体已经具有相同的主键值

简而言之,在POST包装器模型期间抛出exception,并将一个条目的状态更改为“Modified”。 在更改状态之前,状态设置为“Detached”,但调用Attach()会引发相同的错误。 我正在使用EF6。 请在下面find我的代码(型号名称已更改,以便于阅读) 模型 // Wrapper classes public class AViewModel { public A a { get; set; } public List<B> b { get; set; } public C c { get; set; } } 调节器 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } if (!canUserAccessA(id.Value)) return new HttpStatusCodeResult(HttpStatusCode.Forbidden); var […]

为什么scanf()在这段代码中造成无限循环?

我有一个小型的C程序,它只是从stdin中读取数字,每个循环都有一个数字。 如果用户input一些NaN,应该在控制台上输出一个错误,input提示应该再次返回。 input“0”时,循环结束,给定的正/负值的数量应打印到控制台。 这是该计划: #include <stdio.h> int main() { int number, p = 0, n = 0; while (1) { printf("-> "); if (scanf("%d", &number) == 0) { printf("Err…\n"); continue; } if (number > 0) p++; else if (number < 0) n++; else break; /* 0 given */ } printf("Read %d positive and %d negative […]

将值从一个窗体发送到另一个窗体

我想要传递两个窗体(c#)之间的值。 我该怎么做? 我有两种forms:Form1和Form2。 Form1包含一个button。 当我点击那个button时,Form2应该打开并且Form1应该处于不活动模式(即不可select)。 Form2包含一个文本框和一个提交button。 当我在Form2的文本框中键入任何消息并单击提交button时,Form2应该closures,Form1应该与提交的值突出显示。 我该怎么做? 有人可以帮我做一个简单的例子。

C和C ++中string文字的types是什么?

C中string的types是什么? 是char *还是const char *或者const char * const ? 那么C ++呢?