文章分类 - C#
摘要:自己看着书,学习写的一个计算器的程序,耗时不少啊,但感觉不错,学习的东西不少!其中涉及的思路暂时先不写了,程序需要修改的地方还有好多,过两天补上!源代码 /Files/hsrzyn/calculate.rar
阅读全文
摘要://声明对象//创建chartSpace对象来放置图表//ChartSpace对象:图形容器对象,也是顶层对象。如果要运用OWC绘制图形,至少要创建一个ChartSpace对象。//所谓容器,就是说ChartSpace对象中可以包含多个图形对象,最多16个。 ChartSpace ThisChart = new ChartSpaceClass();//在chartSpace中添加图表 ChChart ThisChChart = ThisChart.Charts.Add(0); ChSeries ThisChSeries = ThisChChart.SeriesCollection.Add(0)
阅读全文
摘要:参考 “清清月儿” 和 “Office Web Components(OWC)绘图控件运用11个疑问解答”需要添加引用 “Microsoft Office Web Components 11.0”,在代码页添加 “using Microsoft.Office.Interop.Owc11;” 成功添加这个引用需要安装office 2003,装了office 2007 不行,或者直接去微软网站下载owc1.exe吧(安装这个之后应该可以不用安装office了吧?没试过,但是如果安装了office 2007 的话下载安装owc11.exe是可以的)先看图代码柱状图一 Code highlightin
阅读全文
摘要:信号量 Semaphore 类似互斥锁,但它可以允许多个线程同时访问一个共享资源 通过使用一个计数器来控制对共享资源的访问,如果计数器大于0,就允许访问,如果等于0,就拒绝访问。计数器累计的是“许可证”的数目,为了访问某个资源。线程必须从信号量获取一个许可证。 通常在使用信号量时,希望访问共享资源的线程将尝试获取一个许可证,如果信号量的计数器大于0,线程将获取一个许可证并将信号量的计数器减1,否则先线程将阻塞,直到获取一个许可证;当线程不再需要共享资源时,将释放锁拥有的许可证,并将许可证的数量加1,如果有其他的线程正在等待许可证,那么该线程将立刻获取许可证。 另外,允许同时访问的资源的进程数.
阅读全文
摘要:互斥锁(Mutex) 互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。 互斥锁可适用于一个共享资源每次只能被一个线程访问的情况函数: //创建一个处于未获取状态的互斥锁 Public Mutex(); //如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态 Public Mutex(bool owned); 如果要获取一个互斥锁。应调用互斥锁上的WaitOne()方法,该方法继承于Thread.WaitHandle类 它处于等到状态直至所调用互斥锁可以被获取,因此该方法将组织住主调线程直到指定的互斥锁可用,如果不需要拥有互斥锁,用Relea.
阅读全文
摘要:System.Threading.Mutex在概念上和System.Threading.Monitor几乎完全一致,只是lock关键字用的不是它,而且它旨在进程间的同步。CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;namespacem
阅读全文
摘要:在图灵程序设计丛书中的《C#本质论》上看到的,这个情况自己从来就没听说过CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;namespacemyConApp{classProgram{constint_total=int.MaxValue;
阅读全文
摘要:以下内容摘自《C#2.0完全参考手册》:(程序代码有所修改)线程T正在Lock块内执行,此时需要暂时不可用的资源R,那么T该做什么呢?如果T等待R资源可用,那么有可能进入某种死循环,因为T将冻结Lock块内的对象,组织其他的进程访问。这样看来,加锁不是一个最佳的解决方案,因为它局部地抵消了多线程编程的优点。更好的解决方案是让T暂时放弃对对象的的控制,允许其他进程运行。当R变得可用时,就通知T让它恢复执行。这种方式的实现依赖于线程间的通信。 在这里要做的是使一个线程能够让位于另一个被中断的线程,并在能够继续运行时被唤醒。C#利用Wait(),Pulse(),PulseAll()等方法来实现线程间
阅读全文
摘要:最近在学习多线程编程,以下代码出自《C#2.0完全参考手册》,稍有改动当使用多个线程是,有时需要协调两个或多个线程的行为,完成这个步骤的过程成为同步(Synchornization)。使用同步机制最常见的原因是,两个或多个线程需要访问同一个共享资源,而该资源每次只能供一个线程使用……同步的关键是引入锁(Lock)的概念,。锁用于控制对对象中的代码块的访问,当一个线程锁定一个对象时,其他线程就不能访问已锁定的代码块。只有当线程释放该锁时,其他线程才能锁定该对象。下面的代码由两个线程执行一模一样的代码(共享资源),输出同样的结果CodeCode highlighting produced by A
阅读全文