One time code

In either an SDI or MDI application, if I want to include some functionality 
( such as serial port configuration and control thread) that can only be run 
once per application instance, where should that code go?  I looked at the 
App class but it doesn't handle user messages ( at least by default ). 
Should the main code and worker thread go in the MainFrm class in the 
OnCreate function?

Help?

Ron H.


-----------------
www.Newsgroup-Binaries.com - *Completion*Retention*Speed*
Access your favorite newsgroups from home or on the road
-----------------
0
rnharsh1 (20)
3/6/2008 1:55:58 PM
vc.mfc 33608 articles. 0 followers. Follow

3 Replies
1045 Views

Similar Articles

[PageSpeed] 41

If it has to do with the "window" of the code (I.E., needs messages) I'd put 
it in the Mainframe, if it has to do with the data, I'd put it in the app 
code.  However, if it's just a worker thread then it shouldn't have to 
handle messages.  It may send them, but that shouldn't be a problem since 
you could direct the messages to a handler function in the mainframe and let 
it figure out what to do from there.

Tom

"Ron H" <rnharsh@nospam.net> wrote in message 
news:47cff697$0$26326$8d2e0cab@news.newsgroup-binaries.com...
> In either an SDI or MDI application, if I want to include some 
> functionality ( such as serial port configuration and control thread) that 
> can only be run once per application instance, where should that code go? 
> I looked at the App class but it doesn't handle user messages ( at least 
> by default ). Should the main code and worker thread go in the MainFrm 
> class in the OnCreate function?
>
> Help?
>
> Ron H.
>
>
> -----------------
> www.Newsgroup-Binaries.com - *Completion*Retention*Speed*
> Access your favorite newsgroups from home or on the road
> ----------------- 

0
tom.nospam (3240)
3/6/2008 3:06:43 PM
On Mar 6, 8:55 am, "Ron H" <rnha...@nospam.net> wrote:
> In either an SDI or MDI application, if I want to include some functionality
> ( such as serial port configuration and control thread) that can only be run
> once per application instance, where should that code go?  I looked at the
> App class but it doesn't handle user messages ( at least by default ).
> Should the main code and worker thread go in the MainFrm class in the
> OnCreate function?
>
> Help?
>
> Ron H.
>
> -----------------www.Newsgroup-Binaries.com- *Completion*Retention*Speed*
> Access your favorite newsgroups from home or on the road
> -----------------



Its not a question of where it should go but rather you should ensure
that you create it only once regardless of who uses it. What you need
is a Singleton pattern which ensures just that. Look at MSDN for
specific examples.

---
Ajay
0
ajaykalra (6841)
3/6/2008 3:25:38 PM
Well, you've not said enough to give a direct answer, but I'll try to inferr what is going
on here.

First, who decides when the action should be done?  Document, view, what?

When is this decision made?

Why do you think you need a user-defined message to implement it?

Now, my first reaction to this was to think of having a single serial port control thread
shared by multiple documents.  I'd probably implement it with a reference-counted
singleton class, such as

class Once {
       public:
       public:
          Once() {
                        Error = ERROR_SUCCESS; 
                        if(refcount == 0)
                            { /* first time */
                             try {
                                    Initialize();
                                  }
                             catch(COnceException * e) 
                                  {
                                   SetMyError(e->GetErrorCode();
                                   e->Delete();
                                  }
                             } /* first time */
                         else
                             Error = ERROR_ALREADY_EXISTS;
                         ++refcount;
                       }
         virtual ~Once() { --refcount; 
                                     if(recount == 0)
                                        { /* kill it */
                                         Finalize();
                                        } /* kill it */
                                   }
          class COnceException : public CExeception{
                   public:
                       CInitializeException(DWORD e) {Error = e;}
                       DWORD GetErrorCode() { return Error; }
                   protected:
                       DWORD Error;
                 };
        DWORD GetMyError()  { return Error; }
        void SetMyError(DWORD e) { Error = e; }
       protected:
            virtual void Initialize() PURE;
            virtual void Finalize() PURE;
            static int refcount;
};

and in once.cpp:
	int Once::refcount = 0;

(once.cpp is a very short file)

class MySerialPort : public Once()
     public:
         MySerialPort();
         ... more stuff here, as appropriate
     protected:
          HANDLE com;
         ...as appropriate
};

in MySerialPort.cpp

MySerialPort::MySerialPort() : Once() 
    {
    }         

void MySerialPort::Initialize()
    {
     com = ::CreateFile(...stuff...);
     if(com == INVALID_HANDLE_VALUE)
          {
           DWORD err = ::GetLastError();
           throw new COnceException(err);
          }     
     ...etc.
     }

I typed this in off the top of my head, so it should be viewed with a bit of caution, but
it's the kind of code I might type in if I needed a singleton class that was reference
couned, but I didn't want to use reference-counted pointers to a dynamically-allocated
instance.
				joe

On Thu, 6 Mar 2008 07:55:58 -0600, "Ron H" <rnharsh@nospam.net> wrote:

>In either an SDI or MDI application, if I want to include some functionality 
>( such as serial port configuration and control thread) that can only be run 
>once per application instance, where should that code go?  I looked at the 
>App class but it doesn't handle user messages ( at least by default ). 
>Should the main code and worker thread go in the MainFrm class in the 
>OnCreate function?
>
>Help?
>
>Ron H.
>
>
>-----------------
>www.Newsgroup-Binaries.com - *Completion*Retention*Speed*
>Access your favorite newsgroups from home or on the road
>-----------------
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
0
newcomer (15974)
3/6/2008 3:26:54 PM
Reply:

Similar Artilces:

Long Reconnect Times w/Multi-Users?
This is a variation on my prior attempt at a thread "App Runs Slower w/2 Users Than w/1?". Front end on C:, back end on a LAN file server. Code to reconnect tables runs in about 2.5 seconds when I'm the only one logged in to the front end. But when one other person has their copy of the front end up and running, that same re-connect process takes 207 seconds. It's not a religious issue bc the only time that process runs is when I prep the front end for distribution before elevating a new version. OTOH, if the reconnects are that slow... I wonder if the rest of the app is...

can excel check one column against another
Hi. I have a spreadsheet with columns such as A, B, C, D, filled with numbers. Each row across such as row 1, then row 2, then row 3, etc of numbers is totaled in column E. Countless rows, each of which is totaled per row and then ends with a grand total at bottom of column E. Next comes columns F, G, H, also filled with numbers (but different numbers), which is totaled per row in Column I. At the bottom of Column I is a grand total. Even though arrived at using different sets of numbers, -both grand totals - in columns E and I must match. Sometimes they don't match. Ouch. So here is m...

why crash in the second method of one interface
Hi, Using one class generated from *.tlb to call 2 methods of one COM. The strange thing is that I got one error of the "First-chance exception in : 0xC0000005: Access Violation" in the second method. I also use ASP web page to call both methods of this COM and both methods seems is OK. ITemplateManage mytemplate; if (!mytemplate.CreateDispatch("comobj.TemplateManage")) { IDE_Error::Report (ComError|1,"ComObj.TemplateManage in FUN_Template::Add()"); return false; } result = mytemplate.Check (templatefilename); decodeparameter=mytemplate.GetInfo (templ...

MSR Credit Card Reader adds all the information on one line
Is there a way to get the CC reader to properly seperate the the acct # from the expiration date? When I swipe I currently get everything on the acct # line. Thanks in advance! What type of CC reader(MSR) to you have? Typically this is an issue with simply configuring the MSR. Rob "Steakum" wrote: > Is there a way to get the CC reader to properly seperate the the acct # from > the expiration date? When I swipe I currently get everything on the acct # > line. > > Thanks in advance! Its a IDTECH Minimag USB/Keyboard Interface Do I need to select the Wedge Key...

Duplicate Transactions, One When Pending, One When Posted
I'm sure this has been addressed, but I couldn't seem to find an answer searching: My problem is, a transaction occurs at my bank, and MM2K7 downloads the data for it. Once that transaction moves from "Pending" to "Posted" at my bank, the transaction data changes, so MM downloads it again. Sometimes I get a possible duplicate message from MM, sometimes I don't. What are people doing to handle this situation? Thank you. This is a problem with your bank, not with Money. Eventually they should fix it. Call them. In the meantime VOID the pending transacti...

Date and Time setup
I work at a 24 hour job we take readings every hour. I want to have the date autofill a cell as the current date but our sheet changes at 0700 every day. So if the sheet is worked on at 0100 the date needs to be for the past day starting at 0700, if the time for the current day changes to 0800 the cell will display the new date. ie: 0100hrs = 4/18/06 0600hrs = 4/18/06 0800hrs = 4/19/06 etc... =TODAY()-(A1<=TIME(7,0,0))*1 HTH -- AP "Joe" <jdbarnes63@earthlink.net> a �crit dans le message de news:28db731403ef4144bf9b3800591a428e@ureader.com... > I work at a 24 ho...

grid off on one page
Is it possible to turn the grid off of only one page? thanks On Thu, 14 Feb 2008 10:37:11 -0600, "greg" <iuouh@ghfhg.com> wrote: >Is it possible to turn the grid off of only one page? Not really as it is a document wide setting.... however, there is workaround open the page shapesheet menu window -> Show shapesheet and set XGridSpacing and YGridSpacing to a large value. -- Regards, Paul Herber, Sandrila Ltd. SSADM for Visio http://www.saadm.sandrila.co.uk/ On Thu, 14 Feb 2008 16:47:53 +0000, Paul Herber <SubstituteMyFirstNameHere@pherber.com> wro...

One to One relationship
I have an Events entity that is an offshoot from the Contacts entity. Basically, it tracks what events each contact has been invited to, and is used mainly by the Events Coordinator. I've set it up as a One (Contact) to Many (Events) relationship. However, I really only want one event form for each contact form. The reason I've set up a different entity rather than just adding a tab is that access to this entity needs to be tightly controlled. Obviously, if many events forms are created for the one contact, it would be very difficult to tell which one is accurate etc. Is it possibl...

Next Date given one date
At this time, I cannot use VBA. Here is my objective: For a given treasury note security: Cell A1, Date 6/17/2004 - today's date Cell A2, Date 7/15/1997 - first coupon date I want to identify the "previous coupon date" and "next coupon date" from today's date based on the frequency of the "first coupon date". Logically speaking: * Security pays 2 times each year * Based on first coupon date, pay dates are: 1/15 & 7/15 * Given today is 6/17/04, the next pay date is 7/15/04. * Given today is 6/17/04, the previous pay date is 1/15/04. Can this be...

Execution time of several minutes
Hello group! A couple of weeks ago, Bob Phillips helped me with a function that rearranges and sorts my list of run times (for different courses when I've been out running). Now, I'm just wondering, is such a function supposed to take 3-4 minutes to execute (on a slow, 800MHz/384RAM (not the newer, faster type))? For each course that I've run (currently about 15 in the "course list"), the function runs through my list of runs (which consists of results from about 90 runs) so that the script can make a new listing of all runs, but this time grouped by course. Thereafter,...

Opening Graph Format Axis Window with Vb code
dear friends, i am using ms office 2003. i have displayed a Microsoft Graph Chart in a form. in that graph if we double click at Origin( where x any y axes intersect each ohter), we will get a data table view. if we again double click at Origin, then we will get a window called Format Axis. it consits of tabs Patterns, scale,Font,Number and Alignment how do we open that window with Vb code. when i click a button that window should be opened ...

route inbound email from ip to one folder
Is there a way to route any incoming email from a certain IP address to a single folder? Our company is receiving emails from a source that we do not wish to receive, and would like these email to be directed to a singe folder rather than blocking them. Any ideas? Thanks. you could send them to the turf dir... http://support.microsoft.com/default.aspx?scid=kb;en-us;245465 "daine" <anonymous@discussions.microsoft.com> wrote in message news:11d501c4263d$f4d05110$a101280a@phx.gbl... > Is there a way to route any incoming email from a certain > IP address to a single ...

One client (Server 2k8-R2/HyperV) will not sync with DPM
We have been running DPM successfully for about a year now without any major problems. Recently we added a new server - a fairly robust PowerEdge that will be housing 4 HyperV VMs. For whatever reason, I can't get anything but the HyperV "Initial Store" to sync correctly. I thought initially it might be a problem with the HyperV machines, but it also fails to back up a small directory of files on the host drive. The oddest part about this is I really don't get an error. It will try an initial sync and run for a day or two and show very minimal data tr...

To view, specifically Units in one report
I have report with a Reporting Tree (9 Unit), when the report is generated, I select only two unit, but I need that the drill down show one report with these unit only If you want multiple units in a single report you will need to use the column layout with unit restrictions on multiple columns Leslie "Pedro" wrote: > I have report with a Reporting Tree (9 Unit), when the report is generated, I > select only two unit, but I need that the drill down show one report with > these unit only Leslie; Each Column layout have the unit restrictions Thanks :-) "Lesl...

Counting occurences of time it takes to calculate to 0 or just ove
I am using Excel 2003 and I would like to create a formula to perform the following calculation. Cell E1 = 100,000.00 Cell E2 = 20,021.88 I would like the formula in Cell E3 If you subtract E2 from E1, update E1 as you go along, how many times do you have to do this to eventually make E1 = zero or a little more than zero? Here is my example: 100,000.00 - 20,021.88 = 79,978.12 (Count = 1) 79,978.12 - 20,021.88 = 59,956.24 (Count = 2) 59,956.24 - 20,021.88 = 39,934.36 (Count = 3) 39,934.36 - 20,021.88 = 19,912.48 (Count = 4) 19,912.48 - 20,021.88 = -109.4 Therefore, the answer shou...

Exchange 5.5 - One Organization
Hello - I am having a problem that I would like some more information on. I have One Organization (5.5) and 16 Sites (5.5) and would like to know why I can't stop the other sites from sending mail through me. If I can, I would like to know how. Thanks for any help. what do you mean by "sending mail through me"? What mail? Internet email? Does each site have its own Internet Mail Service? Or is your site kind of the "hub" where all Internet email comes in and goes out? -- Susan Conkey [MVP] "dave.mudgett" <davemudgett@discussions.microsoft....

See more than one tab at a time
I would like to be able to see more than one Tab at a time in Excel. Currently I'm able to see two Tabs from different worksheets, but not two or more tabs from the same worksheet On Sat, 28 Aug 2004 14:57:03 -0700, "rocky59" <rocky59@discussions.microsoft.com> wrote: >I would like to be able to see more than one Tab at a time in Excel. >Currently I'm able to see two Tabs from different worksheets, but not two or >more tabs from the same worksheet That would be because each tab represents a single worksheet. Clicking on the tab would move you from where ...

Why Would You Lose Sound On One User
WXP Pro Version 2002 Service Pack 3 with all current updates Dell Pentium(R) D CPU 2.80Ghz 2.79Ghz, 512 MB RAM System has three users all with admin rights - User 1(primary - me), User 2 (wife), and System Admin. (which I made visible on desktop). I (User 1) have lost sound when attempting to play CD's, and other audio files using WMP 11, however, I can still hear system sounds. User 2 and System Admin. still have full sound. System restore does not help ( in this case I only had a restore point from 5 days ago. Any thoughts? -- Skeeter "Old age and ...

Combining two fields into one in a query for a report
The database I am working on is to keep track of parts that are either in their storage area (on a shelf) or on an assembly line. I have two fields, one called Shelf and every part has a shelf assigned to it. The other field is Line and if a part in on an assembly line, there is a number indicating that line, if the part is on it's shelf, the word STOCK appears in the line field. (Has to be this way for the rest of the database to work, so this is not up for question) Now, I need to creat a report to show where all parts are. If they are on a line the result needs to show the l...

Tracing and tracking email on one mailbox
1. I want to use a current copy of the Exchange 2003 database and scrub it for all emails regarding one mailbox. Is there a tool that will assist me in this? 2. How do I tell Exchange 2003 to notify me of any emails transmitted to and from a particular address? And yes, this in conjunction with #1. I want to track one user's mail without using delegate or adding myself to their Active Directory profile and having to create another profile in Outlook. 1. Have a read through this: http://wm.quest.com/reg/marketing/landing/ediscoveryexchange/. This product is ideally suited for ...

import into outline codes
can I import from Excel into Outline codes (not outline level) Hi Marylou, see my answer to your original post. Regards Barbara Am 03.03.2010 20:17, schrieb Marylou: > > can I import from Excel into Outline codes (not outline level) > Hi Barbara, thank you I did see your original post; however this was not my question. I already import outline levels. My question is: can I import into the customized outline code1; outline code2, etc thanks "Barbara - Austria" wrote: > Hi Marylou, > > see my answer to your original post. &g...

transferring money from one computer to another
Folks, I just got this laptop which I really like, but unfortunately, I can't figure out how to get my MS Money program (not the files-- that's a no-brainer) to my new computer. I downloaded the program and did not get the CD for it. Is there a way to do it? Both of these computers are mine, so I should be able to, but I can't figure it out. Thanks! Govind... There are almost no apps that can be moved from one machine to another these day. Almost all require having the installation routines. This is why I always recommend against "download" installations. &qu...

One-to-one relationship
I am importing a DB from Filemaker with info about students (names, address, etc.). There is just one table and because it has been used for many years, it cannot be changed. I have created another table for additional student enrollment information. I have created a one-to-one relationship between the two tables using an autonumber primary key in the student table and a number primary key in the enrollment table. I have created two forms to add information to the tables. All new students are added via the old student form first. When I switch to the new student form, I can...

mstsc fails to connect on one of two laptops
I have to nearly identical HP laptops. Both are the same model, both are running Vista64 Home Premium. With mstsc, I can connect to my XP Pro SP3 system with no trouble at all. But on the other one, the connection fails with an illuminating "Cannot connect" message. No details as to why. I tried copying the Default.rdb file from the machine that can connect to the other one. That made no difference. I tried connecting as a different user, creating another .rdp file, but that didn't work either. Any ideas? Thanks, Jason In article <#UUSfR4wKHA.3564@TK2MS...

Pull publishers up and only one out of ten pages shows up. Why?
I am using Publisher 2003. I made a booklet and had 60 some odd pages on it, but when I pull it up now only 1 page shows. Why? and what have I done or can do to correct this problem? ...