WriteableBitmap.Lock Yöntem

Tanım

Geri arabelleği güncelleştirmeler için ayırır.

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

Örnekler

Aşağıdaki kod örneği, yöntemini kullanarak geri arabelleği ayırma işlemini Lock gösterir.

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

Açıklamalar

Lock yöntemi, kilit sayısını artırır. bir WriteableBitmap kilitlendiğinde, işleme sistemi yöntemine yapılan çağrılar tarafından kilidi tamamen kaldırılana WriteableBitmap kadar Unlock güncelleştirme göndermez.

çok iş parçacıklı uygulamaları desteklemek için yöntemini kullanabilirsiniz Lock . Bu senaryolarda UI iş parçacığı bit eşlemi kilitler ve geri arabelleği diğer iş parçacıklarında kullanıma sunar. Çalışan iş parçacığı bir çerçeveyi tamamladığında, ui iş parçacığı değiştirilmiş dikdörtgenler ekler ve arabelleğin kilidini açar.

Ui iş parçacığı, işleme iş parçacığı ön arabelleğe ileriye doğru kopyalamak için arka arabellekte bir kilit aldığı zaman engelleyebilir. Bu bloktan gecikme süresi çok uzunsa, kısa bir süre beklemek için yöntemini kullanın TryLock ve ardından arka arabellek kilitliyken diğer görevleri gerçekleştirmek için UI iş parçacığının engelini kaldırın.

Şunlara uygulanır

Ayrıca bkz.