2010-08-20 20 views
2

J'ai une application Windows que je cours dans C# Express 2008 depuis un an et que j'essaie de convertir depuis quelques jours jusqu'en 2010. Le problème que j'ai c'est que c'est un application multithread qui doit exécuter une série de code chaque seconde. Ce qu'il fait est d'avoir un thread principal, qui appelle 3 threads de travail, attend qu'ils finissent puis effectue un traitement supplémentaire, dort jusqu'à 1 seconde et s'exécute à nouveau. Le problème fait partie du code peut appeler un service Web qui prend 8 secondes pour répondre, donc ce bit de code est appelé en utilisant ThreadPool.QueueUserWorkItem. Le problème est lors de l'exécution en 2010 lorsque cette partie du code est appelée, le thread principal continue à s'exécuter, mais quand il éveille les sous-threads, il se bloque jusqu'à ce que la méthode Threadpool se termine.C# Express 2010 Multi-Threading

Cela n'arrive jamais en 2008. Des suggestions? Jusqu'à présent, j'ai mis ce morceau de code dans son propre fil plutôt que d'utiliser Threadpool mais le même problème.

+7

Pourriez-vous poster un exemple de code qui montre cela? –

+0

Quelques questions. Avez-vous changé la version de .Net que l'application utilise? VS 2008 utilisait 3.5 par défaut et '10 utilise 4.0, mais VS ne bute pas le framework quand un projet est mis à jour. Aussi, cela arrive-t-il uniquement lors de l'exécution dans VS (mode de débogage vraisemblablement)? Enfin, comme Mikael a suggéré que le code dupliquer le problème aiderait. – Nate

Répondre

0

J'ai porté beaucoup d'applications de VS 08 à 10 lorsque j'ai mis à jour mon IDE, La plupart du temps, je n'ai eu aucun problème tant que toutes les valeurs dans l'onglet 'Propriétés' (appelez-vous onglet), regardez bien. Parfois, Visual Studio corrige automatiquement tout ce qui ne va pas, mais d'autres fois, vous devez entrer et modifier manuellement.

Avez-vous des avertissements dans votre fenêtre d'erreur?