Application.DoEvents Application.DoEvents Application.DoEvents Application.DoEvents Method

Definition

Verarbeitet alle Windows-Meldungen, die sich derzeit in der Meldungswarteschlange befinden.Processes all Windows messages currently in the message queue.

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

Beispiele

Im folgenden Codebeispiel wird die Verwendung DoEvents der-Methode veranschaulicht.The following code example demonstrates using the DoEvents method. Wenn das Beispiel ausgeführt wird, kann ein Benutzer Grafikdateien aus einer OpenFileDialogauswählen.When the example runs, a user can select graphics files from an OpenFileDialog. Die ausgewählten Dateien werden im Formular angezeigt.The selected files are displayed in the form. Die DoEvents -Methode erzwingt das Neuzeichnen des Formulars für jede geöffnete Grafikdatei.The DoEvents method forces a repaint of the form for each graphics file opened. Fügen Sie zum Ausführen dieses Beispiels den folgenden Code in ein Formular ein, PictureBox das PictureBox1eine benannte OpenFileDialog , OpenFileDialog1eine benannte und eine Schalt fileButtonFläche mit dem Namen enthält.To run this example, paste the following code in a form containing a PictureBox named PictureBox1, an OpenFileDialog named OpenFileDialog1, and a button named fileButton. Ruft die InitializePictureBox Methoden InitializeOpenFileDialog und aus dem Konstruktor oder Load der Methode des Formulars auf.Call the InitializePictureBox and InitializeOpenFileDialog methods from the form's constructor or Load method.

Hinweis

Wenn Sie in Visual Studio dem Formular mithilfe OpenFileDialog eines Zieh Vorgangs einen hinzufügen, müssen Sie die folgende InitializeOpenFileDialog Methode ändern, indem Sie die Zeile entfernen, mit der eine neue Instanz von OpenFileDialogerstellt wird.In Visual Studio, if you add an OpenFileDialog to your form by using a drag operation, you will have to modify the following InitializeOpenFileDialog method by removing the line that creates a new instance of OpenFileDialog.

Das Beispiel erfordert auch, dass Control.Click das OpenFileDialog -Ereignis Button des-Steuer FileOk Elements und des-Ereignisses mit den Ereignis Handlern verbunden sind, die im Beispiel definiert sind.The example also requires that the Control.Click event of the Button control and the FileOk event of the OpenFileDialog are connected to the event handlers defined in the example. Wenn das Beispiel ausgeführt wird, klicken Sie auf die Schaltfläche, um das Dialogfeld anzuzeigen.When the example is running, display the dialog box by clicking the button.

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

Hinweise

Wenn Sie ein Windows Form ausführen, wird das neue Formular erstellt, das dann auf die Verarbeitung von Ereignissen wartet.When you run a Windows Form, it creates the new form, which then waits for events to handle. Jedes Mal, wenn das Formular ein Ereignis behandelt, verarbeitet es den gesamten Code, der diesem Ereignis zugeordnet ist.Each time the form handles an event, it processes all the code associated with that event. Alle anderen Ereignisse warten in der Warteschlange.All other events wait in the queue. Während der Code das Ereignis behandelt, antwortet Ihre Anwendung nicht.While your code handles the event, your application does not respond. Beispielsweise wird das Fenster nicht neu gezeichnet, wenn ein anderes Fenster oben gezogen wird.For example, the window does not repaint if another window is dragged on top.

Wenn Sie im DoEvents Code aufzurufen, kann die Anwendung die anderen Ereignisse verarbeiten.If you call DoEvents in your code, your application can handle the other events. Wenn Sie z. b. ein Formular haben, das einem ListBox hinzugefügt wird, und dem Code hinzufügen DoEvents , wird das Formular neu gezeichnet, wenn ein anderes Fenster darauf gezogen wird.For example, if you have a form that adds data to a ListBox and add DoEvents to your code, your form repaints when another window is dragged over it. Wenn Sie aus DoEvents dem Code entfernen, wird das Formular erst neu gezeichnet, wenn der Click-Ereignishandler der Schaltfläche die Ausführung abgeschlossen hat.If you remove DoEvents from your code, your form will not repaint until the click event handler of the button is finished executing. Weitere Informationen zu Messaging finden Sie unter User Input in Windows Forms.For more information on messaging, see User Input in Windows Forms.

Anders als bei Visual Basic 6,0 DoEvents wird die-Methode von Thread.Sleep der-Methode nicht aufgerufen.Unlike Visual Basic 6.0, the DoEvents method does not call the Thread.Sleep method.

In der Regel verwenden Sie diese Methode in einer-Schleife, um Nachrichten zu verarbeiten.Typically, you use this method in a loop to process messages.

Achtung

Das Aufrufen dieser Methode bewirkt, dass der aktuelle Thread angehalten wird, während alle wartenden Fenster Meldungen verarbeitet werden.Calling this method causes the current thread to be suspended while all waiting window messages are processed. Wenn eine Meldung bewirkt, dass ein Ereignis ausgelöst wird, werden möglicherweise andere Bereiche des Anwendungs Codes ausgeführt.If a message causes an event to be triggered, then other areas of your application code may execute. Dies kann dazu führen, dass Ihre Anwendung unerwartete Verhalten aufweist, die schwer zu Debuggen sind.This can cause your application to exhibit unexpected behaviors that are difficult to debug. Wenn Sie Vorgänge oder Berechnungen durchführen, die sehr lange dauern, ist es häufig vorzuziehen, diese Vorgänge in einem neuen Thread auszuführen.If you perform operations or computations that take a long time, it is often preferable to perform those operations on a new thread. Weitere Informationen zur asynchronen Programmierung finden Sie unter asynchronen Programming Model (APM).For more information about asynchronous programming, see Asynchronous Programming Model (APM).

Gilt für:

Siehe auch