2011-07-14 3 views
-1
public void spawnVr_Monthly() { 
    vrMonthlyProcessingThread = new Thread(new ThreadStart(process_Vr_Monthly_File)); 
    vrMonthlyProcessingThread.Start(); 
} 
public void process_Vr_Monthly_File() { 
    OpenFileDialog vrmpf = new OpenFileDialog(); 
    vrmpf.AutoUpgradeEnabled = true; 
    vrmpf.Title = "Select VR Monthly Parking file to process"; 
    vrmpf.Filter = "VR Monthly Parking File (VRMTHY_OUT*.TXT|*.TXT"; 
} 
+1

Est-ce que vous affichez réellement la boîte de dialogue? Le code que vous avez montré est incomplet. –

+0

OpenFileDialog ne peut pas être utilisé sur un thread de travail qui n'est pas STA. Voir Thread.SetApartmentState() pour plus de détails. Quelle que soit la version de .NET que vous avez utilisée sur cette machine XP, vous avez oublié de vous en avertir. –

Répondre

2

Avez-vous [STAThread] attribut sur votre fonction principale()?

Et je pense que vous feriez mieux de générer cette boîte de dialogue sur le thread UI pas n'importe quel arrière-plan. Utilisez SynchronizationContext ou Control.Invoke() pour exécuter quelque chose sur le thread d'interface utilisateur.

Questions connexes