База ответов ИНТУИТ

Практикум прикладного программирования на C# в среде VS.NET 2008

<<- Назад к вопросам

Рассмотрим пример кода:struct Situation { //Наш поток public FileStream filestream; //Здесь будем хранить данные public byte [] bText; //Размер буфера public long bufSize;public MaualResetEvent manualresetevent;}static void EndAsingRead(IAsyncResult iasyncresult){Situation situation = (Situation)iasyncresult.AsyncState; int readCount = situation.filestream.EndRead(iasyncresult); situation.filestream.Close();situation.manualresetevent.Set(); situation.manualresetevent.Close();}Если в приведенном выше коде закоментировать строку situation.manualresetevent.Set(), то в этом случае:

(Отметьте один правильный вариант ответа.)

Варианты ответа
будет выведено содержимое текстового файла перед окончанием операции чтения
в функции EndAsingRead данные не будут выведены вообще (Верный ответ)
будет выведено содержимое текстового файла только после окончания операции чтения
Похожие вопросы
Внесем в файл C:\a.txt числа 0123456789, выполним следующий код:
private void button1_Click(object sender, System.EventArgs e){//Файл создан заранее, его объем должен быть достаточно большим string path = "C:\a.txt"; using(FileStream        fileStream = new FileStream(path, FileMode.Open)) {  fileStream.Seek(1, SeekOrigin.Begin);    for (int i=0;i<fileStream.Length;i++)      textBox1.Text=fileStream.ReadByte()+" ";  }
Результат в TextBox:
Рассмотрим следующий фрагмент кода:private void button1_Click(object sender, System.EventArgs e){ string path = @"C:\a.txt";using(FileStream filestream=File.Open(path, FileMode.OpenOrCreate)) { BinaryWriter binarywriter = new BinaryWriter(filestream); decimal dNum=20.3m; binarywriter.Write(dNum); dNum=723.05m; binarywriter.Write(dNum); dNum=3000.105m; binarywriter.Write(dNum); }using(FileStream filestream=File.Open(path, FileMode.Open)) { BinaryReader binaryreader = new BinaryReader(filestream); decimal dNum; filestream.Seek(16,SeekOrigin.Begin); textBox1.Text+=binaryreader.ReadDecimal().ToString()+" "; filestream.Seek(32,SeekOrigin.Begin); textBox1.Text+=binaryreader.ReadDecimal().ToString()+" "; filestream.Seek(0,SeekOrigin.Begin); textBox1.Text+=binaryreader.ReadDecimal().ToString()+" "; }}Результат в TextBox:
Внесем в файл C:\a.txt числа 0123456789, выполним следующий код:
private void button1_Click(object sender, System.EventArgs e){   //Файл создан заранее его объем должен быть достаточно большимstring path = "C:\a.txt"; FileInfo fileinfo=new FileInfo(path);  using(FileStream   fileStream = fileinfo.OpenRead()) {  fileStream.Seek(0, SeekOrigin.Begin);  byte[] bArray=new byte[10];    int iBytes=fileStream.Read(bArray,0,10);    if(iBytes == 10)  {   for(int i=0; i < iBytes; i++)   textBox1.Text+= bArray[i];  }}						
Результат:
Внесем в файл C:\a.txt числа 0123456789, выполним следующий код:
private void button1_Click(object sender, System.EventArgs e){//Файл создан заранее его объем должен быть достаточно большим string path = "C:\a.txt";FileInfo fileinfo=new FileInfo(path);  using(FileStream       fileStream = fileinfo.OpenWrite()) {  fileStream.Seek(0, SeekOrigin.Begin);          byte[] bArray=new byte[10];  Random numrandom = new Random();  for(int i=0; i <bArray.Length; i++)  {   //Записываем случайные числа в массив   bArray[i]=(byte)numrandom.Next(48,57);   fileStream.WriteByte(bArray[i]);   textBox1.Text+=bArray[i];  }				 }}
полный результат выполнения кода:
Пример кода:
private void button1_Click(object sender, System.EventArgs e){ manualresetevent=new ManualResetEvent(false); Thread thread1 = new Thread(new ThreadStart(AsynchronProcess1)); //Процесс 1 стартует первым thread1.Start(); Thread thread2 = new Thread(new ThreadStart(AsynchronProcess2)); thread2.Start();Функция AsynchronProcess1
показывает, что:
В следующем примере кода: using System.Runtime.Serialization.Formatters.Soap; ...FileStream stream = File.Create("MySoapOrderEntity.xml");formatter.Serialize(stream, order);stream.Close();демонстрируется:
Следующий код:Imports SystemImports System.IOModule VBDemo Sub Main() Dim Bytes() As Byte = New Byte(10) {} Dim I As Integer Dim MemStr As New MemoryStream()Dim FileStr As New FileStream(“c:\temp\bytes.bin”, _ FileMode.CreateNew) Dim Rand As System.Random = New System.Random() For I = 0 To 9 Bytes(I) = Rand.Next(0, 100) Next MemStr.Write(Bytes, 0, I) MemStr.WriteTo(FileStr) MemStr.Close() FileStr.Close() End SubEnd Moduleдемонстрирует:
В следующем примере кода:using System.Runtime.Serialization.Formatters.Soap; SoapFormatter formatter = new SoapFormatter();FileStream stream = File.Create("MySoapOrderEntity.xml");formatter.Serialize(stream, order);stream.Close();демонстрируется:
Фрагмент кода:
Imports System Imports System.IO Imports System.Security.Cryptography Module VBDemo Sub Main()     Dim Bytes() As Byte = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74}     Dim EncBytes() As Byte = New Byte(15) {}     Dim DecBytes() As Byte = New Byte(10) {}     Dim FileName As String = "c:\temp\text.enc"     Dim EncFile As New FileStream(FileName, FileMode.Create, _         FileAccess.Write)     Dim DES As New DESCryptoServiceProvider()     Dim DESEncrypt As ICryptoTransform = DES.CreateEncryptor()     Dim CryptoStreamEnc As New CryptoStream(EncFile, DESEncrypt, _         CryptoStreamMode.Write)     Console.WriteLine("Original Data")     ToHexArray(Bytes)     CryptoStreamEnc.Write(Bytes, 0, Bytes.Length)     CryptoStreamEnc.Close()     EncFile.Close()     EncFile = New FileStream(FileName, FileMode.Open, FileAccess.Read)     EncFile.Read(EncBytes, 0, EncFile.Length)     EncFile.Close()     Console.WriteLine("Encrypted Data")     ToHexArray(EncBytes)     Console.WriteLine()     Dim DecFile As New FileStream(FileName, FileMode.Open, _         FileAccess.Read)     Dim DESDecrypt As ICryptoTransform = DES.CreateDecryptor()     Dim CryptoStreamDec As New CryptoStream(DecFile, DESDecrypt, _         CryptoStreamMode.Read)     Dim Reader As New BinaryReader(CryptoStreamDec)     Console.WriteLine("Decrypted Data")     DecBytes = Reader.ReadBytes(10)     ToHexArray(DecBytes) End Sub Sub ToHexArray(ByVal A As Byte())     Dim I As Integer     For I = 0 To A.GetUpperBound(0)         Console.Write("0x{0:x2} ", A(I))         If I = 7 Then             Console.WriteLine()         End If     Next End Sub End Module
показано:
Пример кода:  { bArray[i]=(byte)numrandom.Next(48,57);					 textBox1.Text+=bArray[i];}				fileStream.Write(bArray,0,10); 
демонстрирует: