Timer event is not triggering button click

linguini

I'm trying transfer Image file for each 3 seconds from source to destination directory, when I click on the "Start" button. And "Stop" button is for stopping the file transfer.

If I use the Start button for the third time, the event is not firing; so, the files are not transferring.

The progress I've done is in the below:

  1. Start --- File Transferring; Pressed STOP Button // It Works as well.
  2. Start --- File Transferring; Pressed STOP Button // It works as well.
  3. Start ----- File is not transferring, Event is not firing // It not works!

What I've done for solving the problem:

  • I put a break-point in the Tick event and the tick event is not firing.
  • I Checked that SourceFiles.Count is greater than the TransferCount (SourceFiles.Count > TransferCount).
  • I noticed that during the file transfer, if I click Stop button during a file transfer that particular file remains un-transferred.

How can i fix this? Thank you in advance.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Threading;

namespace GridTest
{
    /// <summary>
    /// Interaction logic for Window3.xaml
    /// </summary>
    public partial class Window3 : Window
    {
        DispatcherTimer dispatcherTimer = new DispatcherTimer();
        private static List<string> SourceFiles = new List<string>();
        private static readonly string SourceDir = @"C:\TestFiles\Images\";
        private static readonly string DestinationDir = @"C:\Files\Images\3_5x5\";
        private static int TransferCount = 0;
        public Window3()
        {
            InitializeComponent();
            this.Loaded += Window3_Loaded;
        }
        void Window3_Loaded(object sender, RoutedEventArgs e)
        {
            dispatcherTimer.Interval = new TimeSpan(0, 0, 3);
            dispatcherTimer.Tick += dt_Tick;
        }
        void dt_Tick(object sender, EventArgs e)
        {
            if (TransferCount < SourceFiles.Count)
            {
                var fileName = System.IO.Path.GetFileName(SourceFiles[TransferCount]);
                var destFile = System.IO.Path.Combine(DestinationDir, fileName);
                System.IO.File.Copy(SourceFiles[TransferCount], destFile,true);
                System.IO.File.Delete(SourceFiles[TransferCount]);
                Console.WriteLine(string.Format("Total Files: {0} Number of files transferred: {1}", SourceFiles.Count, TransferCount + 1));
                TransferCount += 1;
            }
            else
            {
                Console.WriteLine(string.Format("Total number of files transferred: {0}. Transfer Completed", TransferCount + 1));
                (sender as DispatcherTimer).Stop();
                (sender as DispatcherTimer).Tick -= dt_Tick;
            }
        }

        private void Start_Click(object sender, RoutedEventArgs e)
        {
            if (!System.IO.Directory.Exists(DestinationDir))
            {
                System.IO.Directory.CreateDirectory(DestinationDir);
            }

            if (System.IO.Directory.Exists(SourceDir))
            {
                SourceFiles = Directory.GetFiles(SourceDir).ToList();
            }
        }

        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            dispatcherTimer.Stop();
        }
    }
}
Steve

If you call Stop, your timer event should not fire until you set IsEnabled property to true.
So I suggest to do a bit of refactoring

    void Window3_Loaded(object sender, RoutedEventArgs e)
    {
        LoadSourceFiles();
        StartTimer();
    }
    void StartTimer()
    {
        dispatcherTimer.Interval = new TimeSpan(0, 0, 3);
        dispatcherTimer.Tick += dt_Tick;
        dispatcherTimer.IsEnabled = true;
    }
    void LoadSourceFiles()
    {
        if (!System.IO.Directory.Exists(DestinationDir))
        {
            System.IO.Directory.CreateDirectory(DestinationDir);
        }

        if (System.IO.Directory.Exists(SourceDir))
        {
            SourceFiles = Directory.GetFiles(SourceDir).ToList();
        }
    }

and call this method every time you press the Start button

    private void Start_Click(object sender, RoutedEventArgs e)
    {
        StartTimer();
    }

    private void Stop_Click(object sender, RoutedEventArgs e)
    {
        dispatcherTimer.IsEnabled = false;
    }

I suggest also to reset the global variable that keeps track of the files transfered to zero when inside the Tick event you discover that every file has been transfered (or disable the Start button)

    ....
    else
    {
          Console.WriteLine(string.Format("Total number of files transferred: {0}. Transfer Completed", TransferCount + 1));
          (sender as DispatcherTimer).Stop();
          (sender as DispatcherTimer).Tick -= dt_Tick;
          TransferCount = 0;
    }

Otherwise if you restart the timer in this situation it will stop immediately

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Timer event is not triggering button click

From Dev

Button click event not triggering

From Dev

Button click event not triggering

From Dev

Triggering OnCancel event of kendo upload on click of button

From Dev

Attach click event to body via button click without immediately triggering it

From Dev

triggering button click event in table row with mouseup event

From Dev

triggering button click event in table row with mouseup event

From Dev

Kendo button(k-button) is not triggering on click event Jquery

From Dev

Gtk Button not triggering button release event on left click

From Dev

Bootstrap modal dialog button click event triggering on modal open

From Dev

Triggering remove event of kendo upload on click of button is not working

From Dev

Click event not always triggering

From Dev

Click event not always triggering

From Dev

Triggering FancyBox with click() event

From Dev

on click event in javascript not triggering

From Dev

JQuery set timer for event triggering

From Dev

JQuery set timer for event triggering

From Dev

Triggering a Click on a Button

From Dev

XAML button not triggering on click?

From Dev

Spacebar triggering click event on checkbox?

From Dev

CheckBox Click event not triggering the function

From Dev

Button click not triggering in popover form

From Dev

AngularJS button click not triggering function

From Dev

Onclick event triggering onload for button

From Dev

Triggering closest button on a delegated event

From Dev

Start timer on button click

From Dev

click event triggering another buttons event

From Dev

How to prevent the enter key from triggering a click event when a button is in focus

From Dev

DIVs click event wrongly triggering other DIVs click event

Related Related

  1. 1

    Timer event is not triggering button click

  2. 2

    Button click event not triggering

  3. 3

    Button click event not triggering

  4. 4

    Triggering OnCancel event of kendo upload on click of button

  5. 5

    Attach click event to body via button click without immediately triggering it

  6. 6

    triggering button click event in table row with mouseup event

  7. 7

    triggering button click event in table row with mouseup event

  8. 8

    Kendo button(k-button) is not triggering on click event Jquery

  9. 9

    Gtk Button not triggering button release event on left click

  10. 10

    Bootstrap modal dialog button click event triggering on modal open

  11. 11

    Triggering remove event of kendo upload on click of button is not working

  12. 12

    Click event not always triggering

  13. 13

    Click event not always triggering

  14. 14

    Triggering FancyBox with click() event

  15. 15

    on click event in javascript not triggering

  16. 16

    JQuery set timer for event triggering

  17. 17

    JQuery set timer for event triggering

  18. 18

    Triggering a Click on a Button

  19. 19

    XAML button not triggering on click?

  20. 20

    Spacebar triggering click event on checkbox?

  21. 21

    CheckBox Click event not triggering the function

  22. 22

    Button click not triggering in popover form

  23. 23

    AngularJS button click not triggering function

  24. 24

    Onclick event triggering onload for button

  25. 25

    Triggering closest button on a delegated event

  26. 26

    Start timer on button click

  27. 27

    click event triggering another buttons event

  28. 28

    How to prevent the enter key from triggering a click event when a button is in focus

  29. 29

    DIVs click event wrongly triggering other DIVs click event

HotTag

Archive