MessageBox qui permet à un processus de continuer automatiquement

Je souhaite qu’une boîte de message soit affichée et que le programme continue simplement sans attendre que je clique sur ok dans cette boîte de message Cela peut-il être fait?

else { // Debug or messagebox the line that fails MessageBox.Show("Cols:" + _columns.Length.ToSsortingng() + " Line: " + lines[i]); } 

Premièrement, la bonne solution serait de remplacer la boîte de message par une fenêtre simple (ou un formulaire, si vous utilisez Winforms). Ce serait assez simple. Exemple (WPF)

       ... class MyWindow : Window { public MyWindow(ssortingng message) { this.DataContext = message; } void SelfClose(object sender, RoutedEventArgs e) { this.Close(); } } ... new MyWindow("Cols:" + _columns.Length.ToSsortingng() + " Line: " + lines[i]).Show(); 

Si vous voulez une solution rapide et sale, vous pouvez simplement appeler la boîte de message à partir d’un thread jetable:

 Thread t = new Thread(() => MessageBox("lalalalala")); t.SetApartmentState(ApartmentState.STA); t.Start(); 

(pas sûr si ApartmentState.STA est réellement nécessaire)

 //You need to add this if you don't already have it using System.Threading.Tasks; 

// Ensuite, voici votre code qui fonctionnera asynchrone du thread principal;

 Task.Factory.StartNew( () => { MessageBox.Show("This is a message"); }); 

utilisez ceci

 this.Dispatcher.BeginInvoke(new Action(() => { MessageBox.Show(this, "text"); })); 

J’espère que ça aide.

 using System.Threading; static void MessageThread() { MessageBox.Show("Cols:" + _columns.Length.ToSsortingng() + " Line: " + lines[i]); } static void MyProgram() { Thread t = new Thread(new ThreadStart(MessageThread)); t.Start(); } 

Cela va démarrer la fonction MessageThread dans son propre thread afin que le rest de votre code dans ce que j’ai appelé MyProgram puisse continuer.

J’espère que cela t’aides.

Ce que vous voulez, ce sont des formes sans modèle. Voici quelques informations et échantillons pour vous.

vous devez utiliser le multi-threading pour réaliser cette tâche dans laquelle un thread (thread principal) effectuera le traitement et un autre sera utilisé pour afficher la boîte de message.

Vous pouvez également envisager d’utiliser un délégué.

Les extraits suivants proviennent de quelque chose que je viens de terminer: –

 namespace YourApp { public partial class frmMain : Form { // Declare delegate for summary box, frees main thread from dreaded OK click private delegate void ShowSummaryDelegate(); ShowSummaryDelegate ShowSummary; ///  /// Your message box, edit as needed ///  private void fxnShowSummary() { ssortingng msg; msg = "TEST SEQUENCE COMPLETE\r\n\r\n"; msg += "Number of tests performed: " + lblTestCount.Text + Environment.NewLine; msg += "Number of false positives: " + lblFalsePve.Text + Environment.NewLine; msg += "Number of false negatives: " + lblFalseNve.Text + Environment.NewLine; MessageBox.Show(msg); } ///  /// This callback is used to cleanup the invokation of the summary delegate. ///  private void fxnShowSummaryCallback(IAsyncResult ar) { try { ShowSummary.EndInvoke(ar); } catch { } } ///  /// Your bit of code that wants to call a message box ///  private void tmrAction_Tick(object sender, EventArgs e) { ShowSummary = new ShowSummaryDelegate(fxnShowSummary); AsyncCallback SummaryCallback = new AsyncCallback(fxnShowSummaryCallback); IAsyncResult SummaryResult = ShowSummary.BeginInvoke(SummaryCallback, null); } // End of Main Class } }