WriteableBitmap.Lock Método

Definición

Reserva el búfer de reserva para las actualizaciones.

public:
 void Lock();
public void Lock();
member this.Lock : unit -> unit
Public Sub Lock ()

Ejemplos

En el ejemplo de código siguiente se muestra cómo reservar el búfer de reserva mediante el Lock método .

    // The DrawPixel method updates the WriteableBitmap by using
    // unsafe code to write a pixel into the back buffer.
    static void DrawPixel(MouseEventArgs e)
    {
        int column = (int)e.GetPosition(i).X;
        int row = (int)e.GetPosition(i).Y;

        try{
            // Reserve the back buffer for updates.
            writeableBitmap.Lock();

            unsafe
            {
                // Get a pointer to the back buffer.
                IntPtr pBackBuffer = writeableBitmap.BackBuffer;

                // Find the address of the pixel to draw.
                pBackBuffer += row * writeableBitmap.BackBufferStride;
                pBackBuffer += column * 4;

                // Compute the pixel's color.
                int color_data = 255 << 16; // R
                color_data |= 128 << 8;   // G
                color_data |= 255 << 0;   // B

                // Assign the color data to the pixel.
                *((int*) pBackBuffer) = color_data;
            }

            // Specify the area of the bitmap that changed.
            writeableBitmap.AddDirtyRect(new Int32Rect(column, row, 1, 1));
        }
        finally{
            // Release the back buffer and make it available for display.
            writeableBitmap.Unlock();
        }
    }

Comentarios

El Lock método incrementa el recuento de bloqueos. WriteableBitmap Cuando un objeto está bloqueado, el sistema de representación no envía actualizaciones hasta WriteableBitmap que las llamadas al Unlock método se desbloquean por completo.

Puede usar el Lock método para admitir implementaciones multiproceso. En estos escenarios, el subproceso de la interfaz de usuario bloquea el mapa de bits y expone el búfer de reserva a otros subprocesos. Cuando el subproceso de trabajo ha terminado un fotograma, el subproceso de la interfaz de usuario agrega rectángulos modificados y desbloquea el búfer.

El subproceso de interfaz de usuario puede bloquearse cuando el subproceso de representación adquiere un bloqueo en el búfer de reserva para copiarlo hacia delante en el búfer frontal. Si la latencia de este bloque es demasiado larga, use el TryLock método para esperar un breve tiempo y, a continuación, desbloquee el subproceso de la interfaz de usuario para realizar otras tareas mientras el búfer de reserva está bloqueado.

Se aplica a

Consulte también