Application.DoEvents Yöntem

Tanım

Şu anda ileti kuyruğunda olan tüm Windows iletilerini işler.

public:
 static void DoEvents();
public static void DoEvents ();
static member DoEvents : unit -> unit
Public Shared Sub DoEvents ()

Örnekler

Aşağıdaki kod örneğinde yönteminin kullanılması gösterilmektedir DoEvents . Örnek çalıştırıldığında, kullanıcı bir OpenFileDialogiçinden grafik dosyaları seçebilir. Seçili dosyalar formda görüntülenir. yöntemi, DoEvents açılan her grafik dosyası için formun yeniden boyanma işlemini zorlar. Bu örneği çalıştırmak için, aşağıdaki kodu adlı , OpenFileDialog adlı ve adlı OpenFileDialog1PictureBox1bir düğmeyi PictureBoxfileButtoniçeren bir forma yapıştırın. Formun InitializePictureBox oluşturucusundan veya Load yönteminden ve InitializeOpenFileDialog yöntemlerini çağırın.

Not

Visual Studio'da, sürükleme işlemini kullanarak formunuza bir OpenFileDialog eklerseniz, yeni bir örneğini OpenFileDialogoluşturan satırı kaldırarak aşağıdaki InitializeOpenFileDialog yöntemi değiştirmeniz gerekir.

Örnek ayrıca denetimin Control.Click olayının ve FileOk olayının ButtonOpenFileDialog örnekte tanımlanan olay işleyicilerine bağlı olmasını gerektirir. Örnek çalışırken, düğmeye tıklayarak iletişim kutusunu görüntüleyin.

void InitializePictureBox()
{
   this->PictureBox1 = gcnew System::Windows::Forms::PictureBox;
   this->PictureBox1->BorderStyle =
      System::Windows::Forms::BorderStyle::FixedSingle;
   this->PictureBox1->SizeMode = PictureBoxSizeMode::StretchImage;
   this->PictureBox1->Location = System::Drawing::Point( 72, 112 );
   this->PictureBox1->Name = "PictureBox1";
   this->PictureBox1->Size = System::Drawing::Size( 160, 136 );
   this->PictureBox1->TabIndex = 6;
   this->PictureBox1->TabStop = false;
}

void InitializeOpenFileDialog()
{
   this->OpenFileDialog1 = gcnew System::Windows::Forms::OpenFileDialog;
   
   // Set the file dialog to filter for graphics files.
   this->OpenFileDialog1->Filter =
      "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" +
      "All files (*.*)|*.*";
   
   // Allow the user to select multiple images.
   this->OpenFileDialog1->Multiselect = true;
   this->OpenFileDialog1->Title = "My Image Browser";
}

void fileButton_Click( System::Object^ sender, System::EventArgs^ e )
{
   OpenFileDialog1->ShowDialog();
}

// This method handles the FileOK event.  It opens each file 
// selected and loads the image from a stream into PictureBox1.
void OpenFileDialog1_FileOk( Object^ sender,
   System::ComponentModel::CancelEventArgs^ e )
{
   this->Activate();
   array<String^>^ files = OpenFileDialog1->FileNames;
   
   // Open each file and display the image in PictureBox1.
   // Call Application.DoEvents to force a repaint after each
   // file is read.        
   for each ( String^ file in files )
   {
      System::IO::FileInfo^ fileInfo = gcnew System::IO::FileInfo( file );
      System::IO::FileStream^ fileStream = fileInfo->OpenRead();
      PictureBox1->Image = System::Drawing::Image::FromStream( fileStream );
      Application::DoEvents();
      fileStream->Close();
      
      // Call Sleep so the picture is briefly displayed, 
      //which will create a slide-show effect.
      System::Threading::Thread::Sleep( 2000 );
   }
   PictureBox1->Image = nullptr;
}
private void InitializePictureBox()
{
    this.pictureBox1 = new System.Windows.Forms.PictureBox();
    this.pictureBox1.BorderStyle = 
        System.Windows.Forms.BorderStyle.FixedSingle;
    this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
    this.pictureBox1.Location = new System.Drawing.Point(72, 112);
    this.pictureBox1.Name = "pictureBox1";
    this.pictureBox1.Size = new System.Drawing.Size(160, 136);
    this.pictureBox1.TabIndex = 6;
    this.pictureBox1.TabStop = false;
}

private void InitializeOpenFileDialog()
{
    this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();

    // Set the file dialog to filter for graphics files.
    this.openFileDialog1.Filter = 
        "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + 
        "All files (*.*)|*.*";

    // Allow the user to select multiple images.
    this.openFileDialog1.Multiselect = true;
    this.openFileDialog1.Title = "My Image Browser";
}

private void fileButton_Click(System.Object sender, System.EventArgs e)
{
    openFileDialog1.ShowDialog();
}


// This method handles the FileOK event.  It opens each file 
// selected and loads the image from a stream into pictureBox1.
private void openFileDialog1_FileOk(object sender, 
    System.ComponentModel.CancelEventArgs e)
{

    this.Activate();
     string[] files = openFileDialog1.FileNames;

    // Open each file and display the image in pictureBox1.
    // Call Application.DoEvents to force a repaint after each
    // file is read.        
    foreach (string file in files )
    {
        System.IO.FileInfo fileInfo = new System.IO.FileInfo(file);
        System.IO.FileStream fileStream = fileInfo.OpenRead();
        pictureBox1.Image = System.Drawing.Image.FromStream(fileStream);
        Application.DoEvents();
        fileStream.Close();

        // Call Sleep so the picture is briefly displayed, 
        //which will create a slide-show effect.
        System.Threading.Thread.Sleep(2000);
    }
    pictureBox1.Image = null;
}
Private Sub InitializePictureBox()
    Me.PictureBox1 = New System.Windows.Forms.PictureBox
    Me.PictureBox1.BorderStyle = _
        System.Windows.Forms.BorderStyle.FixedSingle
    Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
    Me.PictureBox1.Location = New System.Drawing.Point(72, 112)
    Me.PictureBox1.Name = "PictureBox1"
    Me.PictureBox1.Size = New System.Drawing.Size(160, 136)
    Me.PictureBox1.TabStop = False
End Sub

Private Sub InitializeOpenFileDialog()
    Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog

    ' Set the file dialog to filter for graphics files.
    Me.OpenFileDialog1.Filter = _
    "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*"

    ' Allow the user to select multiple images.
    Me.OpenFileDialog1.Multiselect = True
    Me.OpenFileDialog1.Title = "My Image Browser"
End Sub

Private Sub fileButton_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles FileButton.Click
    OpenFileDialog1.ShowDialog()
End Sub


' This method handles the FileOK event.  It opens each file 
' selected and loads the image from a stream into PictureBox1.
Private Sub OpenFileDialog1_FileOk(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
 Handles OpenFileDialog1.FileOk

    Me.Activate()
    Dim file, files() As String
    files = OpenFileDialog1.FileNames

    ' Open each file and display the image in PictureBox1.
    ' Call Application.DoEvents to force a repaint after each
    ' file is read.        
    For Each file In files
        Dim fileInfo As System.IO.FileInfo = New System.IO.FileInfo(file)
        Dim fileStream As System.IO.FileStream = fileInfo.OpenRead()
        PictureBox1.Image = System.Drawing.Image.FromStream(fileStream)
        Application.DoEvents()
        fileStream.Close()

        ' Call Sleep so the picture is briefly displayed, 
        'which will create a slide-show effect.
        System.Threading.Thread.Sleep(2000)
    Next
    PictureBox1.Image = Nothing
End Sub

Açıklamalar

Bir Windows Formu çalıştırdığınızda, yeni form oluşturulur ve bu form olayların işlenmesini bekler. Form bir olayı her işlediğinde, bu olayla ilişkili tüm kodları işler. Diğer tüm olaylar kuyrukta bekler. Kodunuz olayı işlerken uygulamanız yanıt vermez. Örneğin, başka bir pencere en üste sürüklenirse pencere yeniden boyanmıyor.

Kodunuzu çağırırsanız DoEvents , uygulamanız diğer olayları işleyebilir. Örneğin, içine veri ekleyen ve kodunuza ekleyen DoEvents bir ListBox formunuz varsa, başka bir pencere üzerine sürüklendiğinde formunuz yeniden boyanıyor demektir. Kodunuzdan kaldırırsanız DoEvents , düğmenin tıklama olayı işleyicisi yürütmeyi bitirene kadar formunuz yeniden boyanmayacak. Mesajlaşma hakkında daha fazla bilgi için bkz. Windows Forms'de Kullanıcı Girişi.

Visual Basic 6.0'ın aksine yöntemi DoEvents yöntemini çağırmaz Thread.Sleep .

Genellikle, iletileri işlemek için döngüde bu yöntemi kullanırsınız.

Dikkat

Bu yöntemin çağrılması, bekleyen tüm pencere iletileri işlenirken geçerli iş parçacığının askıya alınmasına neden olur. Bir ileti bir olayın tetik edilmesine neden olursa, uygulama kodunuzun diğer alanları yürütülebilir. Bu, uygulamanızın hata ayıklaması zor beklenmeyen davranışlar sergilemesine neden olabilir. Uzun süren işlemler veya hesaplamalar gerçekleştirirseniz, bu işlemleri yeni bir iş parçacığında gerçekleştirmek genellikle tercih edilir. Zaman uyumsuz programlama hakkında daha fazla bilgi için bkz. Zaman Uyumsuz Programlama Modeli (APM).

Şunlara uygulanır

Ayrıca bkz.