Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КОП-Примеры / Ресурсы

.doc
Скачиваний:
13
Добавлен:
12.03.2015
Размер:
68.1 Кб
Скачать

Пример 7.1. Использование ресурсов.

///////////////

// C#

// Компонент CmpU с неуправляемым ресурсом

using System;

using System.IO;

using System.ComponentModel;

namespace csK_Disp_DLL_4

{

public class CmpU: Component

{ private int number; // Номер компонента

private bool disposed= false;

FileStream file; // Неуправляемый ресурс

public int Number

{get {return number;}}

public CmpU (int CompNum)

{ number= CompNum;

// Создание файла - неуправляемого ресурса

file= new FileStream ("c:\\КОП\\FileRes.txt",

FileMode.Create);

}

~CmpU ( ) { }

public void Work ( )

{ // Использовать неуправляемый ресурс

string str= number.ToString ( );

BinaryWriter binWriter= new BinaryWriter (file);

binWriter.Write (str);

Console.WriteLine ("Компонент " + str +

" записал в файл ResFile.txt (неуправляемый ресурс)");

}

public void Dispose ( )

{ Dispose (true);

Console.WriteLine ("Компонент "+ number +

" освободил ресурсы");

GC.SuppressFinalize (this);

}

protected virtual void Dispose (bool disposing )

{ if (! this.disposed) // Если первый вызов функции Dispose

{ if (disposing)

{

// Управляемые ресурсы не освобождаем,

// поскольку компонент их не использует }

// Освободить используемый неуправляемый ресурс

file.Close ( );

}

disposed= true;

}

}

}

///////////////

// C#

using System;

using System.IO;

using csK_Disp_DLL_4;

class Client

{ static void Main (string[] args)

{ CmpU cmpU= new CmpU (5);

cmpU.Work ( );

cmpU.Dispose ( );

// Неуправляемый ресурс (файл)

FileStream file;

file= new FileStream ("c:\\КОП\\FileRes.txt",

FileMode.Create);//.Open);

// Если закомментировать строку cmpU.Dispose ( );,то

// Error: Process can't access the file because it is

// being used by another process

}

}

Пример 7.2. Использование компонентом неуправляемого и управляемого ресурсов.

///////////////

// C#

// Компонент CmpUM с неуправляемым и управляемым ресурсами

using System;

using System.IO;

using System.ComponentModel;

using csK_Disp_DLL_4;

namespace csK_Disp_DLL_5

{ public class CmpUM: Component

{ private int number; // Номер компонента

private bool disposed= false;

FileStream file1; // Неуправляемый ресурс

CmpU cmpU; // Управляемый ресурс

public int Number

{get {return number;}}

public CmpUM (int CompNum)

{ number= CompNum;

// Создание файла - неуправляемого ресурса

file1= new FileStream ("c:\\КОП\\FileRes1.txt",

FileMode.Create);

cmpU= new CmpU (100);

}

~CmpUM ( ) { }

public void Work ( )

{ // Использовать неуправляемый ресурс

string str= number.ToString ( );

BinaryWriter binWriter= new BinaryWriter (file1);

binWriter.Write (str);

Console.WriteLine ("Компонент " + str +

" записал в файл FileRes1.txt (неуправляемый ресурс)");

cmpU.Work ( );

}

public void Dispose ( )

{ Dispose (true);

Console.WriteLine ("Компонент "+ number +

" освободил ресурсы");

GC.SuppressFinalize (this);

}

protected virtual void Dispose (bool disposing )

{ if (! this.disposed) // Если первый вызов функции Dispose

{

if (disposing)

{ // Освободить используемый управляемый ресурс

// (компонент cmpU)

cmpU.Dispose ( );

cmpU= null;

}

// Освободить используемый неуправляемый ресурс

// (файл FileRes1.txt)

file1.Close ( );

}

disposed= true;

}

}

}

///////////////

// C#

using System;

using System.IO;

using csK_Disp_DLL_5;

class Client

{

static void Main (string[] args)

{ // Неуправляемый ресурс (файл)

//FileStream file;

CmpUM cmpUM= new CmpUM (5);

cmpUM.Work ( );

cmpUM.Dispose ( );

// Неуправляемый ресурс (файл)

FileStream file;

file= new FileStream ("c:\\КОП\\FileRes.txt",

FileMode.Create);

FileStream file1;

file1= new FileStream ("c:\\КОП\\FileRes1.txt",

FileMode.Create);

// Если закомментировать строку cmpU.Dispose ( );,то

// Error: Process can't access the file because it is

// being used by another process

}

}

///////////////

// C#

// Компонент CmpU с неуправляемым ресурсом

using System;

using System.IO;

using System.ComponentModel;

namespace csCmpU

{

public class CmpU: Component

{

private int number; // Номер компонента

private bool disposed= false;

FileStream file; // Неуправляемый ресурс

public int Number

{

get {return number;}

}

public CmpU (int CompNum)

{

number= CompNum;

// Создание файла - неуправляемого ресурса

file= new FileStream ("c:\\КНИГИ\\Книги-КОП\\FileRes.txt",

FileMode.Create);

}

~CmpU ( ) { }

public void Work ( )

{

// Использовать неуправляемый ресурс

string str= number.ToString ( );

BinaryWriter binWriter= new BinaryWriter (file);

binWriter.Write (str);

Console.WriteLine ("Компонент " + str +

" записал в файл ResFile.txt (неуправляемый ресурс)");

}

public void Dispose ( )

{

Dispose (true);

Console.WriteLine ("Компонент "+ number +

" освободил ресурсы");

GC.SuppressFinalize (this);

}

protected virtual void Dispose (bool disposing )

{

if (! this.disposed) // Если первый вызов функции Dispose

{

if (disposing)

{

// Управляемые ресурсы не освобождаем,

// поскольку компонент их не использует

}

// Освободить используемый неуправляемый ресурс

file.Close ( );

}

disposed= true;

}

}

}

///////////////

// C#

// Компонент CmpUM с неуправляемым и управляемым ресурсами

using System;

using System.IO;

using System.ComponentModel;

using csCmpU

namespace csK_Disp_DLL_5// cs CmpUM

{

public class CmpUM: Component

{

private int number; // Номер компонента

private bool disposed= false;

FileStream file1; // Неуправляемый ресурс

CmpU cmpU; // Управляемый ресурс

public int Number

{get {return number;}}

public CmpUM (int CompNum)

{ number= CompNum;

// Создание файла - неуправляемого ресурса

file1= new FileStream ("c:\\КНИГИ\\Книги-КОП\\FileRes1.txt",

FileMode.Create);

cmpU= new CmpU (100);

}

~CmpUM ( ) { }

public void Work ( )

{ // Использовать неуправляемый ресурс

string str= number.ToString ( );

BinaryWriter binWriter= new BinaryWriter (file1);

binWriter.Write (str);

Console.WriteLine ("Компонент " + str +

" записал в файл FileRes1.txt (неуправляемый ресурс)");

cmpU.Work ( );

}

public void Dispose ( )

{ Dispose (true);

Console.WriteLine ("Компонент "+ number +

" освободил ресурсы");

GC.SuppressFinalize (this);

}

protected virtual void Dispose (bool disposing )

{ if (! this.disposed) // Если первый вызов функции Dispose

{

if (disposing)

{

// Освободить используемый управляемый ресурс

// (компонент cmpU)

cmpU.Dispose ( ); // 1

cmpU= null; // 1

}

// Освободить используемый неуправляемый ресурс

// (файл FileRes1.txt)

file1.Close ( );

}

disposed= true;

}

}

}

///////////////

// C#

using System;

using System.IO;

using csCmpUM

class Client

{

static void Main (string[] args)

{

CmpUM cmpUM= new CmpUM (5);

cmpUM.Work ( );

cmpUM.Dispose ( );

// Неуправляемый ресурс (файл)

// FileStream file; //2

// file= new FileStream ("c:\\КНИГИ\\Книги-КОП\\FileRes.txt", // 2

// FileMode.Create); // 2

// Если закомментировать строку 1 cmpU.Dispose ( ); и

// раскомментировать строки 2, то сгенерируется исключение:

// Error: Process can't access the file because it is

// being used by another process

}

}

Соседние файлы в папке КОП-Примеры