Aracılığıyla paylaş


WriteableBitmap.Lock Yöntem

Tanım

Güncelleştirmeler için geri arabelleği 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ırmayı 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 Unlock kadar WriteableBitmap 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ı için 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ığı ön arabelleğe ileriye kopyalamak için arka arabellek üzerinde bir kilit alır işleme iş parçacığı engelleyebilir. Bu bloğun 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 engellemesini kaldırın.

Şunlara uygulanır

Ayrıca bkz.