Genéricos em C # 2.0: como criar um objeto Action com zero parâmetros
Primeiro de tudo, estou usando VS2005 e C # 2.0.
Eu estou tentando definir uma propriedade Text do combobox de dentro do evento SelectedIndexChanged. De outrofio aqui no StackOverflow isso foi proposto feito da seguinte maneira:
BeginInvoke(new Action(() => someCombobox.Text = "x" ));
Agora, em primeiro lugar, isso retorna um erro do compilador para mim. Eu acredito que é porque o objeto Action se comporta de maneira diferente nas duas especificações de linguagem. No C # 2.0, o objeto Action parece precisar do<T>
estrutura em todas as declarações. Talvez eu esteja errado, mas gostaria de esclarecer isso.
O que funciona é o seguinte:
BeginInvoke(new Action<string>( delegate { someCombobox.Text = "x"; }), new object[] { "" });
No entanto, parece-me muito estranho que eutem que defina o objeto Action com um parâmetro de tipo (especialmente porque não pretendo passar nenhum parâmetro)! De alguma forma, remover este parâmetro também tornaria o novo objeto vazio [] obsoleto, que é o que eu quero.
Alguém pode me ajudar a simplificar a chamada acima?
Finalmente, é garantido que o BeginInvoke terminará após o SelectedIndexChanged e, portanto, atualizará a propriedade Text do combobox com o texto correto?
Eu realmente aprecio aprender as respostas para essas perguntas.