Component类应用

Code
/*组建必须实现system.ComponentModel.IComponent接口或者继承实现这个接口的类(Component)
Component类提供制作组件所需的方法,属性与事件
包括释放资源的方法Dispose()取得所属容器的属性Container等
Component类中Dispose方法释放资源
public void Dispose();
protected virtual void Dispose(bool disposing);
传入的参数为true时,则释放对象持有资源若为false则只释放其中未受管理的资源。
实现一个组件时,复写基础类Dispose(bool)方法,并且在客户端程序代码中调用Dispose(),由这个
方法调用传入true的布尔参数,清除所有未受管理以及管理的资源,另外,必须实现析构函数,以在Dispose
未被调用时进行未受管理资源的清除工作。
 
*/
using System.IO ;
using System .Text ;
using System .ComponentModel ;
using System ;
public class PropertyComponent:Component

{
 
private StreamReader myStreamReader;
 
private string strFilePath;
 
public string pFilePath
 {
     
get{return strFilePath;}
     
set{strFilePath=value; }
 }
 
public void DoRead()
 {
     
if(pFilePath.Length ==0)
     {
         Console.WriteLine  (
"NO File!");
         Console.WriteLine  (
"Don't Excuting");
         
return;
     }
     
     myStreamReader
=new StreamReader (strFilePath);
     Console.WriteLine (
"start read file!");
     ReadText();
     
 }
 
private void ReadText()
 {
     
string strBufferText;
     
try
     {
       
do
       {     strBufferText
=myStreamReader.ReadLine ();
          Console.WriteLine (strBufferText);
         
       }
while(strBufferText!=null);
    }
     
catch(Exception e)
         
     {
             Console.WriteLine (e.ToString ());
         
     }
     
 }
 
protected override void Dispose(bool disposing)
 {
     
if(disposing==true&&strFilePath.Length >0)
     {
         Console.WriteLine (
"parameters is true");
         Console.WriteLine (
"close stream object");
         myStreamReader.Close ();         
     }
     
base.Dispose (disposing);//释放整个继承结构里所掌握的资源
     
 }
 
~PropertyComponent()
 {
     Console.WriteLine (
"Destructor is called");
     Console.WriteLine (
"Call Dispose(fase)");
     Dispose(
false);
 }
 
}
class UsingPropComp
{
    [STAThread ]
    
static void Main(string[] args)
    {
        
string strReadTextFile;
        PropertyComponent myPropComp
=new PropertyComponent();
        Console.WriteLine (
"Please Input FilePath:");
        strReadTextFile
=Console.ReadLine ();
        myPropComp.pFilePath
=strReadTextFile;
        myPropComp.DoRead();
        strReadTextFile
=myPropComp.pFilePath;
        
if(strReadTextFile.Length >0)
        {
            Console.WriteLine (
"readFile:{0}",strReadTextFile);
        }
        
else
        {
            Console.WriteLine (
"No Read any File!");
        }
        myPropComp.Dispose();
        Console.ReadLine();
    }
}

转载于:https://www.cnblogs.com/hubcarl/archive/2009/06/02/1494333.html

猜你喜欢

转载自blog.csdn.net/weixin_33860737/article/details/93817239