При создании обновлений пользовательского интерфейса с помощью GTK # (GDK2), например, смены текста ярлыка, видимости кнопок и т. Д., Следует ли, как правило, использовать Gdk.Threads.AddTimeout
или Gdk.Threads.AddIdle
?AddTimeout или AddIdle для обновлений пользовательского интерфейса в основной теме GTK?
The GDK2 documentation утверждает, что AddIdle
Добавляет функцию, которая будет вызвана, когда нет более высокого приоритета событий в ожидании.
Похоже, что AddTimeout
обеспечит более отзывчивое обновление. Однако в документации указано:
Обратите внимание, что функции тайм-аута могут задерживаться из-за обработки других источников событий. Таким образом, на них не следует полагаться для точного определения времени .
Который приводит меня к мысли, что Idle и Timeout являются столь же отзывчивыми, как и каждый другой (что они кажутся при запуске кода).
Комментарий в некотором коде, на котором я работаю, предполагает, что Timeout приводит к более быстрому обновлению, но ударяет по пользовательскому интерфейсу сложнее, но я не могу найти никаких источников для резервного копирования.
Как правило, какой из этих методов я должен использовать для выполнения обновлений GTK в основном потоке?
Threads.AddTimeout(0, 0,() =>
{
// do something;
return false;
});
против
Threads.AddIdle(0,() =>
{
// do something;
return false;
});
Вы предположили бы, что Idle будет использоваться по умолчанию для всех обратных вызовов, возвращающих false, таких как изменения текста меток, видимость кнопок и т. Д., И тайм-аут только для особых обстоятельств? –
Возможно. Если я увижу тайм-аут в коде, я сначала догадываюсь, почему его существует, потому что я хочу, чтобы в будущем было что-то определенное определенное время. Если я хочу, чтобы это было сделано как можно быстрее, но не раньше, чем в чем-то конкретном, я ожидал бы, что кто-то использует простоя с обратным вызовом с приоритетом, отражает то, как быстро перезвонить. – Blake