|
Hence your code shows such a behaviour...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
What about trying yourself?
- ns ami -
|
|
|
|
|
I don't need to: I suppose to know both about your code and the OP's one. My mental-diff-tool says they are not the same...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
::TerminateThread( GetCurrentThread(), 0 );
cout << "after termination" << endl;
cout.flush();
This was my sample code...
- ns ami -
|
|
|
|
|
Your hypothesis is actually clever, anyway I cannot see how it fits with OP's introduction:
"_$h@nky_" wrote: i have made a worker thread and from that worker thread i am calling function to do some processing.
i have started my worker thread using this code
pThread = AfxBeginThread(Thread , (LPVOID) this);
I am terminating that thread on click event of a button, using this code
int ret = ::TerminateThread(pThread->m_hThread,NULL);
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
- ns ami -
|
|
|
|
|
ns ami wrote: ::TerminateThread( GetCurrentThread(), 0 );
Of course, you are terminating the current thread, so it's normal that nothing after is executing . The OP terminates a thread which is probably not the current thread (we can't be 100% sure about that but chances are big that this is another thread).
EDIT: actually, yes it is a different thread because the OP terminates the thread which was created by calling AfxBeginThread.
|
|
|
|
|
I was just pointing out a possibility that I found.
From OP's code I too believe that he is terminating the thread created with AfxBeginThread. I think debugging is helpful for him to ensure that which thread is being executed.
- ns ami -
|
|
|
|
|
ns ami wrote: I was just pointing out a possibility that I found.
From OP's code I too believe that he is terminating the thread created with AfxBeginThread.
That's not what you were saying in your first message and what this all discussion is about. This is what you said and on what Carlo was arguing with you:
It seems like you are terminating the same thread that is executing the specified code...
|
|
|
|
|
Cedric Moonen wrote: That's not what you were saying in your first message and what this all discussion is about.
I really didn't get you...
Cedric Moonen wrote: It seems like you are terminating the same thread that is executing the specified code...
I intended that the thread which executes the following code is being terminated by itself.
int ret = ::TerminateThread(pThread->m_hThread,NULL);
This can be equal to
::TerminateThread( GetCurrentThread(), 0 );
and can cause the issue specified by the OP.
If I am wrong please tell me...
- ns ami -
|
|
|
|
|
After a fairly good sleeping, I understood that we were thinking different...
- ns ami -
|
|
|
|
|
People here will bluntly refuse to look into any code that makes use of things like TerminateThread() .
"_$h@nky_" wrote: How to resolve this problem??
You can start by removing calls to TerminateThread()
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
hi:
now,i am learning MFC, now,i build a dialog program,and want to make it like the dialog in vista,how to do?
my envionment : windows xp, vs 2008.
would sb have a sample? if so,could send it to me by email?
email:zhanghui5432@live.com
ai!! mybe i should learn english first. wright this ,nearly spend my life~~~
hoho~~~
zhangyunhui haha
|
|
|
|
|
zhanghui5432 wrote: ...i build a dialog program,and want to make it like the dialog in vista,how to do?
Sounds like you need a manifest file.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
~~~~
melancholy !!
how can i do ?
do you have some ensample about this,
I want to find some in codeproject,but,it`s hard to me for my poor english.
|
|
|
|
|
zhanghui5432 wrote: do you have some ensample about this,
I want to find some in codeproject,but,it`s hard to me for my poor english.
See here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
you can contact me , i am from china too. haha
msn: zhu_lin4103@126.com
it's my pleasure to make friend with you.
|
|
|
|
|
大哥 msn 有126 结尾的吗?? 我没找到你啊 ~~~
我msn zhanghui5432@live.com
|
|
|
|
|
Hi all,
I have a class, say GeneralBuilding, which could be one of the classes SmallBuilding, MediumBuilding, LargeBuilding, etc...., depending on the parameters passed to the Building constructor. SmallBuilding, MediumBuilding, and LargeBuilding have a common base class Building.
Is it possible that when i execute
GeneralBuilding x(1) // 1 bedroom...
that x is of a form chosen by the constructor depending on the constructor parameters (i.e. for sake of argument if no. bedrooms = 1 then x would be of class type SmallBuilding, if bedrooms = 2 then x would of type MediumBuilding, and if bedrooms >= 3 then x would be of type LargeBuilding) ?
The reason I'm interested in this is that I need the functionality for each type of GeneralBuilding to change depending on the building size, and i am trying to avoid a bunch of "if then" statements within one class. I'd like to spread the responsibilty to make the classes clean, tidy, safer, more maintainable etc.
I'm looking into it now...
Paul
|
|
|
|
|
No, you can't select the type of the class this way. However, by using pointers (or references), you can manipulate all buildings the same way by manipulating pointers to the base class (this is called polymorphism, google for it if you want more information).
What you could is delegate the instanciation of the class to an external class (a factory class), which will take care of creating the correct type depending of the parameter and will return a pointer to the base class. That's how it is done in general.
|
|
|
|
|
I see. That's a big help. It's still quite clean and neat. "Factory" classes - - i'll bear those in mind !
I guess what I'm ideally after requires an OOP programming language which handles this factory class/pointer business itself, which alas C++ currently does not.
Thanks,
Paul
|
|
|
|
|
paolosh wrote: I guess what I'm ideally after requires an OOP programming language which handles this factory class/pointer business itself, which alas C++ currently does not.
C++ IS an OOP language. This kind of stuff can't be done in Java neither: when you create a class, you always need to know exactly which instance of the class to create, this can't be delegated to the constructor of the base class.
Anyway, if your approach would work, the problem is shifted somewhere else: in the constructor of your base class, you would still need to make a choice based on the parameter, so at that point you would still need to know all existing sub-types.
So, delegating that task to a helper class doesn't change the concept.
|
|
|
|
|
It depends what you want to do. From an OOP point of view, yes the class instantiates to it's own type.
However, from a developer point of view, you may need certain mechanisms to achieve certain tasks.
|
|
|
|
|
paolosh wrote: I guess what I'm ideally after requires an OOP programming language which handles this factory class/pointer business itself, which alas C++ currently does not.
That's not a duty of the OOP language, that's a developer task. Anyway, since it is a well-known, common, problem, it has well-known-state-of-the-art solutions, i.e. design patterns. See the classic GOF's book [^] for reference about creational patterns.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Is it best to use a Factory Class, or would it be the same to use a "create()" function within the class itself.. is one better than the other, or is it just cleaner to use FC's?
|
|
|
|