The quest for a succint, readable expression of Next in a sequence
It sounds like what you want is a foreach over the Dictionary, combined with a break for the bytesToWrite condition.

foreach (var pin in dictionary)
{
    if (bytesToWrite &lt;= 0)
        break;

    Debug.Print(pin.Key + ", " + pin.Value);

    // Write the bytes using Key and Value for location information.

    bytesToWrite -= bytesWritten;
}