C#程序调用外部程序(转)
)/** 编程语言:Visual Studio .NET C# (Beta 2)* 作 者:迪泊威* 功 能:通过C#程序调用 Windows 记事本程序 编辑一个* 名为 test.txt 的文本文件。** 在整个程序中 System.Diagnostics.Process.Start(Info) * 为主要语句。* 如果只是单独执行一个外部程序,可用一条如下代码即可:* System.Diagnostics.Process.Start(* "外部程序名","启动参数");*/using System;class test{static void Main(){//声明一个程序信息类System.Diagnostics.ProcessStartInfo Info = new S
Visual C#中使用线程之五(转)
代码讨论 要启动此函数,请创建一个包含 5 个项目的线程数组。此数组将保持对所有线程的引用,以备将来使用。 MQListen 类的构造函数使用两个参数:包含消息队列的计算机名以及要侦听的队列的名称。构造函数使用文本框中的值来为这两个参数赋值。 要创建线程,您需要进入循环以初始化每个线程对象。Thread 构造函数要求您向其传递一个委托,该委托在调用线程的 Start 方法时指向要调用的函数。您希望线程开始使用 MQListen.Listen 函数,但该线程并不是一个委托。为了满足线程构造函数的要求,您必须传递一个 ThreadStart 对象
Visual C#中使用线程之四(转)
代码讨论 MQListen 类包含一个不同于构造函数的函数。该函数封装每个辅助线程要执行的所有工作。在主线程中,您向线程构造函数传递一个对此函数的引用,以便在启动线程时执行该函数。 Listen 所做的第一件事情是设置一个消息队列对象。 MessageQueue 构造函数通过三种实现进行重载。第一种实现使用两个参数:一个字符串参数,指定侦听队列的位置;一个布尔值参数,指示是否为访问队列的第一个应用程序赋予独占读取队列的权限。第二种实现只使用队列路径参数,第三种实现不使用参数。为了简便起见,您可以使用第三种实现,在下一行
Visual C#中使用线程之二(转)
使用线程模式 为了使您对线程模式有一定的概念,我们可以将其想象为从一所屋子搬到另一所屋子。如果您采用单线程方法,则需要您自己完成从打包到扛箱子再到拆包的所有工作。如果您使用单元线程模式,则表示您邀请了好朋友来帮忙。每个朋友在一个单独的房间里工作,并且不能帮助在其他房间工作的人。他们各自负责自己的空间和空间内的物品搬运。如果您采用自由线程方法,您仍然邀请相同的朋友来帮忙,但是所有朋友可以随时在任何一个房间工作,共同打包物品。与此类似,您的房子就是运行所有线程的进程,每个朋友都是一个代码实例,搬运
Visual C#中使用线程之三(转)
辅助线程 首先需要构建封装所有线程工作的 MQListen 类。将下列代码插入 MQListen 中。 // C# public class MQListen { private string m_MachineName; private string m_QueueName; // 构造函数接收必要的队列信息。 public MQListen(string MachineName, string QueueName) { m_MachineName = MachineName; m_QueueName = QueueName; } // 每个线程用来侦听 MQ 消息的一种唯一方法 public void Listen() { // 创建一个 MessageQueue 对象。 System.Messaging.MessageQueue MQ = new System.Messaging.MessageQueue(); // 设置 Messa
Visual C#中使用线程之一(转)
摘要: 本文论述了各种模式的线程(单线程、单元线程和自由线程)以及每种模式的使用方法。同时,还提供了一个使用线程的 C# 语言代码示例,以帮助您编写使用线程的应用程序。本文还讨论了多线程代码中的一些重要问题。 简介 编写多线程 Microsoft® 消息队列 (MSMQ) 触发器应用程序向来是一件让人畏惧的事情。不过,.NET 框架线程和消息类的出现使这项工作变得比以前容易了。这些类允许您使用任何适用于 .NET 框架的语言来编写多线程应用程序。以前,像 Microsoft Visual Basic® 之类的工具对线程的支持十分有限。因此不得
C#打造自己的文件浏览器(转)
C#的功能十分强大,用它可以轻松地做出属于自己的文件浏览器。下面简单地介绍一下文件浏览器的大致实现过程。其中涉及的有关这些控件的具体用法可参见C#的联机帮助。 你需要用到几个控件: TreeView(用于显示显示目录树); ListView(用于显示文件和目录列表); Splitter(用于允许用户调整TreeView和ListView的大小); 其它的如:MainMenu,ToolBar,StatusBar,ImageList等等就看你的实际需要了。 首先,新建一个C#项目(Windows应用程序),命名为MyFileView,将窗口命名为mainForm,调整主窗口大小(Size)
用C#开发程序应用框架之二(转)
请不要将template方法写为虚方法,因为这将给最终用户修改template方法的能力从而改变了整个框架的基础。也就是说这仅是框架开发都需要完成的任务,最终用户要做的就是从框架基类继承并重写这些在框架中定义的抽象类以实现自己定制的功能。 // 从基类继承 class MyClass : AppFramework { // 将抽象方法重写以实现定制的功能 override public void init() { Console.WriteLine("MyClass::init"); } override public void run() { Console.WriteLine("MyClass::run"); } override p
用C#开发程序应用框架之一(转)
简介: 框架是一种定制的通用的应用程序开发基础软件,在其基础上可以开发完整的关且功能完善的软件。在最近几年里,已经成功实现了某些应用领域的开发框架,比如说用户介面开发及数据访问开发等。如果能成功的开发出一个框架,这将是一个突破,因为这意味着开发将不再从头开始实现某个功能:比如一个框架如果可以成功的生成一个用户介面,哪么它也能生成做任意的用户介面。例如,假如我们使用java Applets 和servlets,我们仅仅需要重写某些方法,就可以实现我们自己的代码。这其中java Applets和servlets就是我们所使用的框架平台。M
在C#程序中实现插件架构之二(转)
反射(Reflection) 在一个插件定义好之后,下一步要做的就是查看主程序是怎么加载插件的.为了实现这个目标,主程序使用了反射机制.反射是.NET中用于运行时查看类型信息的.在反射机制的帮助下,类型信息将被加载和查看.这样就可以通过检查这个类型以判断插件是否有效.如果类型通过了检查,那么插件就可以被添加到主程序的界面中,就可以被用户操作. 示例程序使用了.NET框架的三个内置类来使用反射:System.Reflection.Assembly,System.Type,和System.Activator. System.Reflection.Assembly类描述了.NET的程序集.在.NET中,程序集是
在C#程序中实现插件架构之一(转)
在.NET框架下的C#语言,和其他.NET语言一样提供了很多强大的特性和机制.其中一些是全新的,而有些则是从以前的语言和平台上照搬过来的。然而,这种巧妙的结合产生了一些有趣的方法可以用来解决我们的问题。这篇文章将讲述如何利用这些奇妙的特性,用插件(plug-ins)机制建立可扩展的解决方案。后面也将提供一个简要的例子,你甚至可以用这个东西来替换那些已经在很多系统中广泛使用的独立的程序。在一个系统中,可能有很多程序经常需要进行数据处理。可能其中有一个程序用于处理雇员的信息,而另一个用来管理客户关系。在大多数情况下,系统总
C#中的非安全编程(转)
介绍 这是C/C++程序迷们经常谈论的一个话题,同时也是一个复杂的、难以理解的话题-指针!每次谈到C#,大多数我遇到的人都持这样的观点-C#中没有指针的概念。而实际上,它已经被废除了,取而代之的是C#中的非安全编程-如何在程序中使用指针。不同于其字面意思的是,使用指针编程并没有什么不安全的。 它如此受关注的根本原因是,非安全编程不同于习惯的.NET开发规范,而需要编程人员进行明确定本地环境设置(仅适用于本地执行)。本文我将从区别两个最容易被疑惑的概念-非安全代码与非受控代码开始讨论非安全编程这个主题。接下
深入解析C#编程中的事件之二(转)
一个事件是一个使对象或类可以提供公告的成员。用户可以通过提供事件句柄来为事件添加可执行代码。事件使用事件声明来声明: 一个事件声明既可以是一个事件域声明也可以是事件属性声明。在每种情况中,声明都可以由属性集合, new 修饰符, 四个访问修饰符的有效组合 和一个静态修饰符组成。 一个事件声明的类型必须是一个代表类型, 而那个代表类型必须至少同事件本身一样可访问。 一个事件域声明与一个声明了一个或多个代表类型域的域声明相应。在一个事件域声明中不允许有readonly 修饰符。 一个事件属性声明与声明了一个代
Visual C# 插件构架实战之二(转)
这个接口不需要过多解释。这里我只实现了RichTextBox控件少数的几个方法,其他可能用得到的,读者自行添加即可。 再然后,根据插件在其生命周期里的行为,设计插件的接口。 /// /// 本程序的插件必须实现这个接口 /// public interface IPlugin { ConnectionResult Connect( IApplicationObject app ); void OnDestory(); void OnLoad(); void Run(); } /// /// 表示插件与主程序连接的结果 /// public enum ConnectionResult { Connection_Success , Connection_Failed } 主程序会首先调用 Connect() 方法,
Visual C# 插件构架实战之一(转)
一、引言 1. 问题的引入 假设你设计的程序已经部署到用户的计算机上,并且能够正常运行了。但是有一天,用户打来了电话——他们要求增加新的功能。确定了用户的需求后,你竟然发现原有的软件架构已经无法胜任新增任务的需求——你需要重新设计这个应用了!但问题是,就算你又用了一个开发周期完成了用户需要的应用,却不能保证用户的需求不会再次变更。也就是说,需求蔓延的可能性依然存在。因此,这种情况下插件构架更能显示出它的优越性。 2. 几个解决方案的对比 我总结了一下我所接触到的插件构架,大致上可分为以
用Visual C#做WinForm组件(之二(转)
六. 创建一个简单的客户应用程序: 使用自定义的组件和使用.Net FrameWork SDK中提供的组件没有任何区别,都是按照以下步骤来进行的: (1).导入组件的名称空间,在应用程序中,就是导入MyControls。具体如下: using MyControls ; (2).在程序中定义由此名称空间封装的组件:在程序中,使用了三个新的组件。具体如下: protected LabeledTextBox name , address , zip ; (3).设定这些组件的属性,在程序中可以看到是如何设定组件的二个自定义的属性的。下面语句就是介绍如何在程序中定义组件的新属性。 name = n
用Visual C#做WinForm组件(之一(转)
我们知道.NET的开发平台提了一个名称空间System.Windows.Forms,在此名称空间中提供了许多开发Windows Form的类和对象,这些类和对象不仅内容十分丰富,而且还具有十分强大的拓展性,可以利用这些类和对象,简单而迅速的开发出自己需要的组件来。本文就将介绍如何利用.Net 开发平台原有的类和对象写一个自己的WinForm组件,如何编译自己的组件,且如何在一个客户程序中使用它。 一. 程序设计和运行的基本环境: (1).视窗2000服务器版 (2)..Net FrameWork SDK Beta 2 版 二. 本文中开发的组件功能介绍: (1).本文中开
用C#代码生成一个简单的PDF文件(转)
using System;using System.IO;using System.Text;using System.Collections; namespace PDFGenerator{/// <summary>/// Application : Generation of PDF file from text/// Author : Pramod Kumar Singh /// Date : 25th July 2001///</summary>public class PDFGenerator{static float pageWidth = 594.0f;static float pageDepth = 828.0f;static float pageMargin = 30.0f;static float fontSize = 10.0f;static float leadSize = 10.0f;//Create a PDF file.//PDF on Diskstatic StreamWriter pPDF=new StreamWriter(&q
来自重粒子的C#程序(转)
Palin.cs--------------using System;using System.Collections; struct Pld{public int level;public String str;}class Palin{public static int Main(string[] args){if (args.Length != 1){Console.WriteLine("Usage: one argument");return -1;}Queue queuePalin = new Queue();Pld currState;int i,j,len;String palindrome;currState.level = 0;currState.str = args[0];queuePalin.Enqueue(currState);while(queuePalin.Count > 0){currState = (Pld)queuePalin.Dequeue();palindrome = (String)currState.str;len =
.Net组件设计中Attrbute的使用(转)
这篇文章是写给.Net 高级用户使用的:)主要针对于编写组件与控件的朋友而言的。 我们编写的组件或控件,最常规的作法是包括属性,方法以及事件等东东。但是如果想把组件或控件做得更加专业,我们就必须为属性或方法得供必要的说明或者是分类。而这一切都包含在组件的Attribute中。 对于它,相信写过C#程序的都不会忘记,它就是包含在[]中的东东,比如 [DefaultValue("aspcn")],[Description("我是飞刀")]等。以前就有朋友问我这些东东怎么用,呵呵,现在找到一些资料给大家:) [Browsable(true|fal