Threading
-
hi i have to run a thread when a button say ok is clicked. if the user press cancel threading should be exited. should not close the dialog. how to do this.
Arise Awake Stop Not Till ur Goal is Reached.
-
hi i have to run a thread when a button say ok is clicked. if the user press cancel threading should be exited. should not close the dialog. how to do this.
Arise Awake Stop Not Till ur Goal is Reached.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace testApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Thread newThread; private void btnOK_Click(object sender, EventArgs e) { newThread = new Thread(new ThreadStart(Display)); newThread.IsBackground = true; newThread.Start(); } private void Display() { MessageBox.Show("threadStarted"); } private void btnCancel_Click(object sender, EventArgs e) { newThread.Abort(); MessageBox.Show("threadstopped"); } } }
My small attempt...
-
hi i have to run a thread when a button say ok is clicked. if the user press cancel threading should be exited. should not close the dialog. how to do this.
Arise Awake Stop Not Till ur Goal is Reached.
Change the Id of the button to something else than IDCANCEL. That will solve the part concerning the closing of the dialog. Concerning stopping the thread, it depends of your code. Is the thread running an 'infinite loop' ? (something like
while(true)
). If yes, then you can check for a boolean and set this boolean to false when you press the button.
Cédric Moonen Software developer
Charting control [v1.2] -
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace testApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Thread newThread; private void btnOK_Click(object sender, EventArgs e) { newThread = new Thread(new ThreadStart(Display)); newThread.IsBackground = true; newThread.Start(); } private void Display() { MessageBox.Show("threadStarted"); } private void btnCancel_Click(object sender, EventArgs e) { newThread.Abort(); MessageBox.Show("threadstopped"); } } }
My small attempt...
This is managed code, we are on the C++ forum.
Cédric Moonen Software developer
Charting control [v1.2] -
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace testApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Thread newThread; private void btnOK_Click(object sender, EventArgs e) { newThread = new Thread(new ThreadStart(Display)); newThread.IsBackground = true; newThread.Start(); } private void Display() { MessageBox.Show("threadStarted"); } private void btnCancel_Click(object sender, EventArgs e) { newThread.Abort(); MessageBox.Show("threadstopped"); } } }
My small attempt...
Your code needs to a convertor to convert of managed code to unmanaged code :-D
WhiteSky
-
hi i have to run a thread when a button say ok is clicked. if the user press cancel threading should be exited. should not close the dialog. how to do this.
Arise Awake Stop Not Till ur Goal is Reached.
Hi, Keep two buttons. One OK and another Cancel on the dialog. Keep a member variable in the dialog class of type CWinThread* say m_pThread. Now create the thread in the OnOK() event handler as m_pThread=AfxBeginThread(ThFunc,0,0); where ThFunc is the function pointer to your thread controlling function and the next argument is the argument passed to your function which I have passed 0 here. This function should be of type UINT YourThreadFunc(LPVOID pParam). To stop execution of the thread write in the OnCancel() event handler m_pThread->SuspendThread(); Hope this will help you. Barna
-
Hi, Keep two buttons. One OK and another Cancel on the dialog. Keep a member variable in the dialog class of type CWinThread* say m_pThread. Now create the thread in the OnOK() event handler as m_pThread=AfxBeginThread(ThFunc,0,0); where ThFunc is the function pointer to your thread controlling function and the next argument is the argument passed to your function which I have passed 0 here. This function should be of type UINT YourThreadFunc(LPVOID pParam). To stop execution of the thread write in the OnCancel() event handler m_pThread->SuspendThread(); Hope this will help you. Barna
-
hi i have to run a thread when a button say ok is clicked. if the user press cancel threading should be exited. should not close the dialog. how to do this.
Arise Awake Stop Not Till ur Goal is Reached.
-
-
If you can come up with some good advice and a real solution to the actual problem then put it there. Barna
My advice was valuable: pointing out unsafe solutions is a valid point to make.
Steve
-
If you can come up with some good advice and a real solution to the actual problem then put it there. Barna
It is better not to give any advice than giving bad advice. Is it too difficult for you to understand this?
"The difficulty lies, not in the new ideas, but in escaping from the old ones." -- John Maynard Keyes, 1936
-
If you can come up with some good advice and a real solution to the actual problem then put it there. Barna
Considering this is a worker thread I should do a single function for example convert some data it could use some resources. If you suspend the thread these resourse are still locked. So thats dangerous. You could change your design to use a state engine in a for(;;) loop breaking the whole functionality in small routines between each routine call you could check whether the thread should be closed. If you should stop the thread it can clear all the allocated resources and stuff. To signal if the thread should be stopped you can use synchronization objects. CEvent for instance. Even simpler can be to use the functions InterlockedIncrement which increment a long variable in a threadsafe manner.
codito ergo sum
-
Here you can find a lot a information about threads: http://www.codeproject.com/threads/usingworkerthreads.asp[^] of course,...also the way to braek it in simple way.
Cheers, Russell
sorry. actually i thought its the c# forum
My small attempt...
-
My advice was valuable: pointing out unsafe solutions is a valid point to make.
Steve
-
It is better not to give any advice than giving bad advice. Is it too difficult for you to understand this?
"The difficulty lies, not in the new ideas, but in escaping from the old ones." -- John Maynard Keyes, 1936
-
Look dude, I just pointed out that your solution was bad. This took me 5 seconds and one line of text. I post heaps of messages on this forum and make an effort to be helpful – when time permits. Now I’m sorry if you’ve been offended but nevertheless my post has merit and is informative. Perhaps not as immediately useful as a full solution: but knowing what not to do should not be underrated. Perhaps it’s taught you something for example.
Steve
-
It is always better to concentrate on the problem posted than comparing ideas.Is it too difficult for you to understand this? Barna
BarnaKol wrote:
It is always better to concentrate on the problem posted than comparing ideas
Agreed. At the same time, when someone is giving a bad advice, we can point that out. Any sane person would realise his mistake, instead of arguing after giving wrong advice on a public forum.
"The difficulty lies, not in the new ideas, but in escaping from the old ones." -- John Maynard Keyes, 1936
-
Look dude, I just pointed out that your solution was bad. This took me 5 seconds and one line of text. I post heaps of messages on this forum and make an effort to be helpful – when time permits. Now I’m sorry if you’ve been offended but nevertheless my post has merit and is informative. Perhaps not as immediately useful as a full solution: but knowing what not to do should not be underrated. Perhaps it’s taught you something for example.
Steve
Steve, please stop arguing with him. Any person with a civic sense must have understood that what he did was a mistake by now. Ironically, he keeps arguing.
"The difficulty lies, not in the new ideas, but in escaping from the old ones." -- John Maynard Keyes, 1936
-
Look dude, I just pointed out that your solution was bad. This took me 5 seconds and one line of text. I post heaps of messages on this forum and make an effort to be helpful – when time permits. Now I’m sorry if you’ve been offended but nevertheless my post has merit and is informative. Perhaps not as immediately useful as a full solution: but knowing what not to do should not be underrated. Perhaps it’s taught you something for example.
Steve
Look dude, What is of use to know how long it took you to understand and how many lines you wrote. What is of use to know how big heaps of messages you post in this forum.You dont have the actual solution lacks your merit. Why "Perhaps not as immediately useful as a full solution". Why not the full solution. My posts have also taught you how to post messages. Barna
-
Steve, please stop arguing with him. Any person with a civic sense must have understood that what he did was a mistake by now. Ironically, he keeps arguing.
"The difficulty lies, not in the new ideas, but in escaping from the old ones." -- John Maynard Keyes, 1936