Agora a pouco me deparei com um erro comum... Ao tentar debugar uma rotina que possuia uma Thread que é responsável por ler um arquivo texto recebi essa excessão do visual studio.
"O CLR não conseguiu fazer a transição do contexto COM 0x25d878 para o contexto COM 0x25d9e8 em 60 segundos. O thread que possui o context/apartment de destino está provavelmente fazendo uma espera sem bombeamento ou processando uma operação de execução muito longa sem bombeamento das mensagens do Windows. Geralmente, essa situação tem um impacto negativo no desempenho e pode até mesmo levar à falta de resposta do aplicativo ou ao acúmulo contínuo de uso de memória com o tempo. Para evitar esse problema, todos os threads com um único apartment em thread (STA) devem usar primitivos de espera de bombeamento (como CoWaitForMultipleHandles) e bombear rotineiramente as mensagens durante operações de execução longa."
Esse erro é comum, e na verdade é uma Exception gerada pelo Assistente de Debug do Visual Studio (MDA - Managed Debug Assistant), quando você está executando o projeto em modo Debug, com um processamento demorado o assistente "lança" essa Exception.
Para resolver o problema basta abrir o seu Visual Studio (estou utilizando a versao 2010) ir em Debug>Exceptions.
Desmarque a caixa ContextSwitchDeadlock.
Isso resolverá o problema. O MDA do VS não lançara mais a Exception ContextSwitchDeadlock.
Para inaugurar o blog irei trabalhar com um exemplo simples de leitura de arquivo texto.Porém o dividirei em duas partes. Nessa primeira parte irei mostrar o como utilizar o controle OpenFileDialog.
A figura abaixo é justamente a OpenFileDialog em execução. Ela é basicamente o windows explorer.
O controle será encontrado dentro da ToolBox na aba Dialogs .
Adicione um botão ao seu form para mostrar o OpenFileDialog. Após feito isso no evento click do botão faça o seguinte.
//aqui colocamos um diretorio padrão para ser iniciado
opfSelecaoArquivo.InitialDirectory = @"C:\";
//definindo a extensao padrao
opfSelecaoArquivo.DefaultExt = "txt";
//adicionando filtros para apresentar apenas arquivos com extensao txt
opfSelecaoArquivo.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
//a propriedade abaixo verifica se o diretorio do arquivo existe(isso ocorre quando digitamos o destino do arquivo)
opfSelecaoArquivo.CheckPathExists = true;
//se o usuario selecinou o arquivo continuamos...
if (opfSelecaoArquivo.ShowDialog() == DialogResult.OK)
{
string caminhoArquivo = opfSelecaoArquivo.FileName;
}
No proximo artigo darei um exemplo completo de leitura de um arquivo txt e como utilizar o controle progressBar.
Para inaugurar o blog irei trabalhar com um exemplo simples de leitura de arquivo texto.Porém o dividirei em duas partes. Nessa primeira parte irei mostrar o como utilizar o controle OpenFileDialog.
A figura abaixo é justamente a OpenFileDialog em execução. Ela é basicamente o windows explorer.