Inquiridor
Debug WCF sendo chamado dentro do get de uma propriedade

Pergunta
-
Tenho uma classe "Genero" que possui dentro dela uma propriedade "List<Musicas>".Ao chamar o serviço ele me retorna o Genero corretamente com o ID e o Nome, e a lista de músicas é nula, pois só carrego ela no get da propriedade, fazendo outra chamada ao serviço para que ele retorna a lista de músicas.Tudo funciona perfeitamente exceto quando estou depurando a aplicação e uso o Quick Watch para ver o valor das propriedades da classe Genero. Por algum motivo a lista de música não é carregada, dá timeout e depois dela todas as outras propriedades do Genero também não são carregadas.Exsite algum jeito para fazer o debug funcionar corretamente nesse caso?
Todas as Respostas
-
Boas rarrosi,
Não sei se entendi bem. No teu serviço (Servico01) você tem uma classe e dentro do blogo get de uma propriedade você chama um outro serviço (Servico02)?
No cliente você tem referenciado o Servico01?
http://www.israelaece.com -
Na verdade só tenho um serviço.Vou explicar melhor.Tenho o serviço Service1 e tenho uma aplicação cliente que referência o Service1.Nesta aplicação cliente tenho uma classe chamada Genero que possui as propriedades ID, Nome, Musicas.A propriedade Musicas é um List<Musica> sendo que Musica é outra classe que está na aplicação cliente.Na aplicação cliente tenho um WinForm com um botão, quando clico neste botão ele instancia uma classe Genero e acessa o Service1 para carregar a classe Genero.A classe Genero retornada pelo Service1 contém o ID e o Nome, a lista de músicas (propriedade Musicas) não vem do serviço neste momento.Ao acessar o get da propriedade Musicas da class Genero é feito um outro acesso ao mesmo Service1 para que ele retorne a lista de músicas.Tudo isso funciona legal, o problema é que quando eu estou depurando e uso o Quick Watch do Visual Studio para ver os valores da classe Genero (o que faz com que a propriedade Musicas seja acessada) parece que a chamada ao Service1 dentro do get da propriedade não retorna, o que causa timeout do Quick Watch.Vai ai o código da classe Genero:
public class Genero { private GeneroDTO _generoDTO = new GeneroDTO(); private List<Musica> _musicas = null; public Genero() { } public Genero(int GeneroId) { this._generoDTO = ServiceProxy.Load<GeneroDTO>(GeneroId); } internal Genero(GeneroDTO _generoDTO) { this._generoDTO = _generoDTO; } public virtual int GeneroId { get { return _generoDTO._generoId; } set { _generoDTO._generoId = value; _musicas = null; } } public virtual string Name { get { return _generoDTO._name; } set { _generoDTO._name = value; } } public virtual List<Musica> Musicas { get { if (_musicas == null) { _musicas = ServiceProxy.LoadMusicasByGenero(GeneroId); } return _musicas; } } }
-
-
Mas é que o Visual Studio não gera nenhuma exceção.O que acontece é que quando eu seleciono a váriavel e entro na janela de QuickWatch (Shift + F9) e depois clico no '+' para ver os valores da váriavel, a propriedade Musicas, que é a que acessa o Service1 para ser carregada, não retorna e acontece o timeout. O timeout não é causado pela demora do retorno da função que carrega as musicas já que no serviço não é logada nenhuma atividade referente a ação de carregar as musicasSegue o link com o print da tela do QuickWatch para mostrar o que ocorre.
- Editado rarrosi sexta-feira, 12 de março de 2010 21:01
-
Boas rarrosi,
Infelizmente não sei te dizer exatamente o que pode estar acontecendo. Não sei se há um comportamento diferenciado quando você tem o debugger vinculado.
http://www.israelaece.com -
Prezado,
Alguma novidade quanto a essa sua dúvida?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima