Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128

    [C#] eseguire funzione con start e stop

    Buongiorno a tutti,
    vorrei realizzare una winform che funzioni con questa logica:
    Quando viene premuto il pulsante "start" parte la funzione "F" finché non viene premuto il pulsante "Stop".
    ho già fatto tutto, non riesco a capire come fare a stoppare la funzione al click del bottone stop. Per farla partire ho associato la funzione all'evento Button_onClickù
    Grazie

  2. #2
    dipende com'è fatta la funzione codice? ps mi sa che hai postato nella sezione sbagliata
    -----
    101110101011101111100000
    -----

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128
    Mi scuso se ho sbagliato posto ma le altre volte che postavo in ".NET Framework" me lo spostavano qua....

    Il codice che deve eseguire è il seguente:
    codice:
            public String Copia(String fileNameSrc,String fileNameDst)
            {
                DateTime dataFileSrc = File.GetLastWriteTime(fileNameSrc);
                DateTime dataFileDst = File.GetLastWriteTime(fileNameDst);
                if (dataFileSrc > dataFileDst)
                {
                    if (File.Exists(fileNameDst + ".old"))
                        try
                        {
                            File.SetAttributes(@fileNameDst+".old", FileAttributes.Normal);
                            File.Delete(fileNameDst + ".old");
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.ToString());
                            return "";
                        }
                    else
                        File.Copy(fileNameDst, fileNameDst + ".old");
    
                    if (File.Exists(fileNameDst))
                        try
                        {
                            File.SetAttributes(@fileNameDst, FileAttributes.Normal);
                            File.Delete(fileNameDst);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.ToString());
                            return "";
                        }
                 
                    File.Copy(fileNameSrc, fileNameDst);
                    return okMessage;
                }
                return errMessage;
            }
    Semplicemente quando premo su start deve continuare a testare il file, appena viene modificato dev'essere copiato in un'altra dir e rinominato.

    Dovrei fare qualcosa del tipo:
    while(!premuto_stop)
    {
    controlla_se_file_modificato
    se_vero
    copia e rinomina
    }

  4. #4
    ok ora è più chiaro. allora crei una sub, all'interno della sub fai le chiamate necessarie.
    poi fai:
    codice:
    sub executing()
    ....
    String Copia(String fileNameSrc,String fileNameDst)
    end sub
    dim t as new thread(addressof executing)
    
    sub btnStart (etc etc etc)
    t.start()
    end sub
    
    sub btnStop
    t.stop()
    end sub
    codice:
    Thread Mythread = new Thread(new ThreadStart(executingMetod));
    
    btnstart:
     mythread.start()
    
    btnstop:
     mythread.stop()
    più gli eventuali controlli del caso



    edit: ops tu volevi il c#
    -----
    101110101011101111100000
    -----

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128
    ah ok devo usare i thread, credevo esistessero altri modi. provo coi thread, graziE!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128
    Ho provato a fare così ma non funziona

    codice:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Threading;
    
    
    namespace copiaWebService
    {
        
        public partial class Form1 : Form
        {
    
            copiaDati cp = new copiaDati();
        
            public Form1()
            {
                InitializeComponent();
            }
    ...
    ...
            private void startButton_Click(object sender, EventArgs e)
            {
    
                Thread t = new Thread(new ThreadStart(cp.scriviStato(cp.Copia(this.textBox1.Text,this.textBox2.Text))));
                t.Start();
          
    
               
    
            }
    ...
    ...
    public class copiaDati
        {
            String okMessage = "FATTO!";
            String errMessage = "File origine non aggiornato";
    
            public String Copia(String fileNameSrc, String fileNameDst)
            {
                DateTime dataFileSrc = File.GetLastWriteTime(fileNameSrc);
                DateTime dataFileDst = File.GetLastWriteTime(fileNameDst);
                if (dataFileSrc > dataFileDst)
                {
                    if (File.Exists(fileNameDst + ".old"))
                        try
                        {
                            File.SetAttributes(@fileNameDst + ".old", FileAttributes.Normal);
                            File.Delete(fileNameDst + ".old");
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.ToString());
                            return "";
                        }
                    else
                        File.Copy(fileNameDst, fileNameDst + ".old");
    
                    if (File.Exists(fileNameDst))
                        try
                        {
                            File.SetAttributes(@fileNameDst, FileAttributes.Normal);
                            File.Delete(fileNameDst);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.ToString());
                            return "";
                        }
    
                    File.Copy(fileNameSrc, fileNameDst);
                    return okMessage;
                }
                return errMessage;
            }
    
            public String scriviStato(String res)
            {
                String s = null; ;
                s = DateTime.Now.ToString();
                if (res == okMessage)
                    s += " --> " + okMessage;
                else
                    s += " --> " + errMessage;
                s += "\n";
    
                return s;
            }
        }
    Quando compilo mi da un errore su:
    Thread t = new Thread(new ThreadStart(cp.scriviStato(cp.Copia(this.textBox1. Text,this.textBox2.Text))));

    dicendo: "è previsto il nome di un metodo".
    Come mai?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.