473,394 Members | 1,817 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

A timer func problem???

Hi,

I have the below code which runs after choosing an item from the
listbox (choose the first one). Goes to the below item after 5 seconds
and then goes to another after 5 sec again... So here is my question:
I have a func which I named as process() I want to run this func only
once when each item is selected in the listbox? So how can I do
that???

Thank you,
Cem Louis

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Timers;
using System.Threading;

namespace WindowsApplication14
{
///
/// Summary description for Form1.
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button1;
private System.Timers.Timer timerClock = new System.Timers.Timer();
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
InitializeTimer();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

public void InitializeTimer()
{
this.timerClock.Elapsed += new ElapsedEventHandler(OnTimer);
this.timerClock.Interval = 5000;
}

///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.listBox1 = new System.Windows.Forms.ListBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// listBox1
//
this.listBox1.Location = new System.Drawing.Point(8, 8);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(120, 95);
this.listBox1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 112);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(120, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Run";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(136, 142);
this.Controls.Add(this.button1);
this.Controls.Add(this.listBox1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}
#endregion

///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void Form1_Load(object sender, System.EventArgs e)
{
listBox1.Items.Add("Arthur");
listBox1.Items.Add("Alex");
listBox1.Items.Add("Amie");
listBox1.Update();
}

private void OnTimer(object source, ElapsedEventArgs e)
{
this.nextvalue(this.listBox1.SelectedIndex);
}

private void button1_Click(object sender, System.EventArgs e)
{
if(this.listBox1.SelectedItem!=null)
{
this.timerClock.Start();
}
else
{
MessageBox.Show("Select an Item");
}
}

private void nextvalue(int currentPosition)
{
if(currentPosition+1<=this.listBox1.Items.Count-1)
{
this.listBox1.SetSelected(currentPosition+1,true);
}
else
{
this.timerClock.Stop();
}
}

private void process()
{
// Does something in an 5 second interval
// Must run once
}
}
}
Nov 16 '05 #1
2 1497
Hi Cem,

The simple answer is:
Change:
private void OnTimer(object source, ElapsedEventArgs e)
{
this.nextvalue(this.listBox1.SelectedIndex);
}

to:
private void OnTimer(object source, ElapsedEventArgs e)
{
this.process();
this.nextvalue(this.listBox1.SelectedIndex);
}

The more complex answer is: why are you using the user interface to drive
internal logic? If you really need to insure that the process only happens
once, then when the button is clicked, you would copy the contents of the
list into an internal collection. Then, at each interval, you would pull
the top item off of the collection, select it in the listbox, and run the
process. Discard the item from the internal list when you are done.

That way, if the user clicks around in the listbox, it won't matter... you
will always invoke the items in the correct order, starting from the correct
place, no matter what the user does during the interval.

Is this a homework assignment?
--- Nick

"Cem Louis" <ce******@phreaker.net> wrote in message
news:12**************************@posting.google.c om...
Hi,

I have the below code which runs after choosing an item from the
listbox (choose the first one). Goes to the below item after 5 seconds
and then goes to another after 5 sec again... So here is my question:
I have a func which I named as process() I want to run this func only
once when each item is selected in the listbox? So how can I do
that???

Thank you,
Cem Louis

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Timers;
using System.Threading;

namespace WindowsApplication14
{
///
/// Summary description for Form1.
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button1;
private System.Timers.Timer timerClock = new System.Timers.Timer();
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
InitializeTimer();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

public void InitializeTimer()
{
this.timerClock.Elapsed += new ElapsedEventHandler(OnTimer);
this.timerClock.Interval = 5000;
}

///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.listBox1 = new System.Windows.Forms.ListBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// listBox1
//
this.listBox1.Location = new System.Drawing.Point(8, 8);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(120, 95);
this.listBox1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 112);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(120, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Run";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(136, 142);
this.Controls.Add(this.button1);
this.Controls.Add(this.listBox1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}
#endregion

///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void Form1_Load(object sender, System.EventArgs e)
{
listBox1.Items.Add("Arthur");
listBox1.Items.Add("Alex");
listBox1.Items.Add("Amie");
listBox1.Update();
}

private void OnTimer(object source, ElapsedEventArgs e)
{
this.nextvalue(this.listBox1.SelectedIndex);
}

private void button1_Click(object sender, System.EventArgs e)
{
if(this.listBox1.SelectedItem!=null)
{
this.timerClock.Start();
}
else
{
MessageBox.Show("Select an Item");
}
}

private void nextvalue(int currentPosition)
{
if(currentPosition+1<=this.listBox1.Items.Count-1)
{
this.listBox1.SetSelected(currentPosition+1,true);
}
else
{
this.timerClock.Stop();
}
}

private void process()
{
// Does something in an 5 second interval
// Must run once
}
}
}

Nov 16 '05 #2
Hi Nick,

I tried your simple solution but it doesn't work because I am running a
webrequest in my process function (taking db values of my website)
process func runs several times I want it to run only once... And your
second solution is a bit complex for me... Can you make it simpler for
me? If you have time can you send a sample?

Thank you for your attention,
Cem Louis

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Nov 16 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

90
by: Mark Hahn | last post by:
"Michael Geary" <Mike@Geary.com> wrote ... >Does anyone have some sample code where obj$func() would be used? > (Apologies if I missed it.) There have been so many messages about delegation...
1
by: Alfonso Morra | last post by:
Hi, I am writing a timer class that I want to be able to get to notify me (via a callback func), when a specified interval has elapsed. I have most of the timer functionality figured - however,...
8
by: bearophileHUGS | last post by:
Hello, I have four things to ask or to suggest, sorry if they seem basic or already discussed. ------------------- I am still ignorant about Tkinter. This little program, after pressing the...
13
by: Manuel Lopez | last post by:
I have a puzzling form timer problem that I didn't experience prior to Access 2003 (though I'm not sure access 2003 is to blame). Here's the situation: a computer has two access 2003 databases on...
9
by: HL | last post by:
I am using VS 2005 Beta - C# Problem: The Timer fires a few milliseconds before the actual Due-Time Let's say a timer is created in the following manner: System.Threading.Timer m_timer = null;...
2
by: Alfonso Morra | last post by:
Hi, I am writing a timer class that I want to be able to get to notify me (via a callback func), when a specified interval has elapsed. I have most of the timer functionality figured - however,...
4
by: grayaii | last post by:
Hi, I have a simple form that handles all its paint functionality like so: this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true); And the entry point to this...
19
by: UG | last post by:
I just wanted to know whether any timer facility exists in C, as it is not mentioned in K&R 2, or in the ISO Draft. By timer function i mean that when we use standard input function like scanf() or...
2
by: chumly96 | last post by:
Hi All, I need some help writing a library for a fedora box. What I need to do is intercept timer calls, and cache the results that are within 1ms. eg: first call, get time. Second call, check...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.