четверг, 11 октября 2012 г.

WindowsForm InvokeRequired

Суть проблемы простая: устанавливая значения контрола из другого потока, ты рискуешь словить эксепшен.
Решение:

public static class ControlExtentions
{
/// 
/// Вызов делегата через control.Invoke, если это необходимо.
/// 
/// Элемент управления
/// Делегат с некоторым действием
public static void InvokeIfNeeded(this Control control, Action doit)
{
if (control.InvokeRequired)
control.Invoke(doit);
else
doit();
}
}

и вызов nextLineProgressBar.InvokeIfNeeded(()=>nextLineProgressBar.Minimum = 0);

А смысл этого действа в том что при присвоении значения из другого потока, WinForm очень сильно ругается.

Подсмотрено тут http://sergeyteplyakov.blogspot.com/2009/03/windows-forms-controlinvoke.html

PS можно конечно и старым методом описанным на MSDN, но так по моему красивей  

среда, 3 октября 2012 г.

IOS jQuery POST bug

Проблема: не работает аякс запрос на IOS 5. Читаем jQuery
"Pages fetched with POST are never cached, so the cache and ifModified options injQuery.ajaxSetup() have no effect on these requests."
Мы таки ему не верим и меняем код

$.post("@Url.Action(IfxMVC.News.ActionNames.GetLastNews)",processNewsResult);
На вот этот код
$.ajax({
                type: 'POST',
                url: "@Url.Action(ActionNames.GetLastNews)",
                cache: false
            }).done(processNewsResult);