Я думаю, что необходимо пойти для решения 2. Нет никакой функции 'подкачки' ни в каком варианте SQL, о котором я знаю.
, Если необходимо регулярно делать это, я предлагаю решение 1, в зависимости от того, как другие части программного обеспечения используют эти данные. У Вас могут быть проблемы блокировки, если Вы не осторожны.
, Но короче говоря: нет никакого другого решения, чем те, Вы обеспечили.
Вот быстрый пример. Запрограммируйте операцию перетаскивания полностью декларативно, используя LINQ to events.
//Create an observable with the initial position and dragged points using LINQ to Events
var mouseDragPoints = from md in e.GetMouseDown()
let startpos=md.EventArgs.GetPosition(e)
from mm in e.GetMouseMove().Until(e.GetMouseUp())
select new
{
StartPos = startpos,
CurrentPos = mm.EventArgs.GetPosition(e),
};
И нарисуйте линию от startpos до текущей pos
//Subscribe and draw a line from start position to current position
mouseDragPoints.Subscribe
(item =>
{
//Draw a line from item.Startpos to item.CurrentPos
}
);
Как видите, нет повсюду обработчиков событий или логических переменных для управления состояние.
Если вам интересно узнать об этих методах GetEventName (), предлагаем вам прочитать всю эту статью, загрузить исходный код и поиграть с ним.