Возможно, Вы могли сделать метод, который создает таймер?
void onButtonClick(object sender, EventArgs e)
{
Delay(1000, (o,a) => MessageBox.Show("Test"));
}
static void Delay(int ms, EventHandler action)
{
var tmp = new Timer {Interval = ms};
tmp.Tick += new EventHandler((o, e) => tmp.Enabled = false);
tmp.Tick += action;
tmp.Enabled = true;
}
Почему Haskell определяет такой конкретный тип для функции?
GHCi использует тип по умолчанию , чтобы вывести более конкретный тип из набора возможные. Вы можете легко избежать этого, отключив ограничение мономорфизма ,
Prelude> :set -XNoMonomorphismRestriction
Prelude> let removeall = filter . (/=)
Prelude> :t removeall
removeall :: (Eq a) => a -> [a] -> [a]
Также стоит отметить, что если вы не присваиваете имя выражению, проверка типов, похоже, избегает установки типа по умолчанию:
Prelude> :t filter . (/=)
filter . (/=) :: (Eq a) => a -> [a] -> [a]