WriteableBitmap.Lock Metod

Definition

Reserverar serverbufferten för uppdateringar.

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

Exempel

I följande kodexempel visas hur du reserverar bufferten med hjälp Lock av metoden .

    // 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();
        }
    }

Kommentarer

Metoden Lock ökar antalet lås. När en WriteableBitmap är låst skickar återgivningssystemet inte uppdateringar förrän den WriteableBitmap är helt upplåst av anrop till Unlock metoden.

Du kan använda Lock metoden för att stödja implementeringar med flera trådar. I dessa scenarier låser användargränssnittstråden bitmappen och exponerar serverbufferten för andra trådar. När arbetstråden har slutfört en ram lägger användargränssnittstråden till ändrade rektanglar och låser upp bufferten.

Användargränssnittstråden kan blockeras när återgivningstråden hämtar ett lås på den bakre bufferten för att kopiera den framåt till den främre bufferten. Om svarstiden från det här blocket är för lång använder du TryLock metoden för att vänta en kort stund och avblockera sedan användargränssnittstråden för att utföra andra uppgifter medan serverbufferten är låst.

Gäller för

Se även