Tag: C#的

C#生产者/消费者

我最近遇到了一个生产者/消费者模式的C#实现。 这非常简单,至less对我来说非常优雅。 它似乎是在2006年前后devise的,所以我想知道这个实现是否是 – 安全 – 仍然适用 代码如下(原代码被引用在http://bytes.com/topic/net/answers/575276-producer-consumer#post2251375 ) using System; using System.Collections; using System.Threading; public class Test { static ProducerConsumer queue; static void Main() { queue = new ProducerConsumer(); new Thread(new ThreadStart(ConsumerJob)).Start(); Random rng = new Random(0); for (int i=0; i < 10; i++) { Console.WriteLine ("Producing {0}", i); queue.Produce(i); Thread.Sleep(rng.Next(1000)); } } static […]

如何在Java或C#中编写一个高效的循环缓冲区?

我想要一个简单的类来实现一个固定大小的循环缓冲区。 它应该是高效的,容易在眼睛上,一般types。 编辑:现在不需要是MT能力。 我以后可以随时添加一个锁,在任何情况下都不会是高并发的。 方法应该是:.Add和我猜.List,我检索所有条目。 第二个想法,我认为应该通过索引器来完成检索。 在任何时候,我都希望能够通过索引检索缓冲区中的任何元素。 但请记住,从一个时刻到下一个元素[n]可能会不同,因为循环缓冲区填满并翻转。 这不是一个堆栈,它是一个循环缓冲区。 关于“溢出”:我期望内部会有一个数组来保存项目,随着时间的推移,缓冲区的头部和尾部将围绕该固定数组旋转。 但是这应该是用户不可见的。 应该没有外部可检测的“溢出”事件或行为。 这不是一个学校的任务 – 它最常用于MRUcaching或固定大小的事务或事件日志。

性能的内置types:字符与短与整数与浮点数与双

这似乎有点愚蠢的问题,但看到亚历山大C在另一个话题的答复 ,我很想知道,如果有什么性能与内置types的差异: char vs short vs int vs float vs. double 。 通常我们在现实生活中不考虑这样的performance差异(如果有的话),但是我想知道这是为了教育目的。 一般问题可以问的是: 整数运算和浮点运算有什么不同? 哪个更快? 什么是更快的原因? 请解释一下。

对“pow”和“floor”的未定义引用

我想在C中做一个简单的斐波纳契计算器,但编译gcc告诉我我缺lesspow和floor函数。 怎么了? 码: #include <stdio.h> #include <math.h> int fibo(int n); int main() { printf("Fib(4) = %d", fibo(4)); return 0; } int fibo(int n) { double phi = 1.61803399; return (int)(floor((float)(pow(phi, n) / sqrt(5)) + .5f)); } 输出: gab@testvm:~/work/c/fibo$ gcc fib.c -o fibo /tmp/ccNSjm4q.o: In function `fibo': fib.c:(.text+0x4a): undefined reference to `pow' fib.c:(.text+0x68): undefined reference to […]

在C ++中传递成员函数作为参数

可能重复: C ++,成员函数的函数指针 问题是以下几点:考虑这段代码: #include <iostream> class aClass { public: void aTest(int a, int b) { printf("%d+%d=%d",a,b,a+b); } }; void function1(void (*function)(int,int)) { function(1,1); } void test(int a,int b) { printf("%d-%d=%d",a,b,ab); } int main (int argc, const char * argv[]) { aClass a(); function1(&test); function1(&aClass::aTest ); // <– how should I point to a's aClass::test […]

在VB.NET或C#中使用itextsharp dll读取PDF内容

如何使用Pdfreader类与itextsharp读取PDF内容。 我的PDF可能包括纯文本或图像的文字。

固定大小的队列,在新的enques时自动出列旧值

我正在使用ConcurrentQueue共享数据结构,目的是持有传递给它的最后N个对象(种类的历史)。 假设我们有一个浏览器,我们想要有最后100个浏览的Url。 我想要一个队列,当容量变满(历史logging为100个地址)时,在插入新条目(入队)时自动删除(出队)最早的(第一个)入口。 我怎样才能做到这一点使用System.Collections ?

我如何最好地沉默关于未使用的variables的警告?

我有一个跨平台的应用程序,在我的一些function并不是所有传递给函数的值都被使用。 因此,我从GCC得到一个警告,告诉我有没有使用的variables。 这个警告的最佳编码方式是什么? 函数的#ifdef? #ifdef _MSC_VER void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal qrLeft, qreal qrTop, qreal qrWidth, qreal qrHeight) #else void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal /*qrLeft*/, qreal /*qrTop*/, qreal /*qrWidth*/, qreal /*qrHeight*/) #endif { 这是如此丑陋,但似乎是编译器喜欢的方式。 或者,我将零分配给函数结尾处的variables? (这是我讨厌的,因为它正在改变程序stream程中的某些东西来使编译器警告无声)。 有没有正确的方法?

一个可执行文件可以是控制台和GUI应用程序吗?

我想创build一个C#程序,可以作为CLI或GUI应用程序运行,具体取决于传入的标志。 可以这样做吗? 我发现了这些相关的问题,但他们并不完全覆盖我的情况: 如何在GUI应用程序中写入控制台 如何使用Windows程序在C ++中获取控制台输出?

如何将MailMessage对象保存为* .eml或* .msg文件

如何将MailMessage对象保存到磁盘? MailMessage对象不公开任何Save()方法。 如果以任何格式保存* .eml或* .msg,我都没有问题。 任何想法如何做到这一点?