Re: Window Form conversion

John Warner <[email protected]>
Newsgroups gmane.comp.windows.devel.dotnet.advanced
Organization John Warner
Message-ID <00c801c93394$18d88830$3d02a8c0@Pluto>
I haven't looked at this specifically, but can't you put the main thread to
sleep aside from just spawned threads? If you need to halt your code until
the user hits a key I would want to do something like that rather then a do
loop of DoEvents(). I think the reason this eats so much CPU is all the
stack work that is going on with DoEvents,  you are in a tight loop forcing
Windows to do a lot of pushing and popping even if there are no messages
pending.

On an aside, what is Fujitsu Cobol like in the .net environment? I ask as
someone here has suggested it as a possible solution to a problem with so
data from a mainframe.

John Warner




> -----Original Message-----
> From: Discussion of advanced .NET topics. 
> [mailto:[email protected]] On Behalf Of 
> Dave Vorgang
> Sent: Tuesday, October 21, 2008 11:33 AM
> To: [email protected]
> Subject: [ADVANCED-DOTNET] Window Form conversion
> 
> 
> Hi All,
> 
> I have just began working on this project for converting our 
> existing HP3000 Vplus screens to use Fujitsu Cobol.Net on 
> backend and use .Net for the forms.
> 
> What I plan to do is create routines to emulate the Vplus 
> intrinsics.  For example, I have this routine to display the form:
> 
>     Private WithEvents _VFormFile As VplusBaseScreen.BaseFormMain
> 
>     Public Function VshowForm(ByVal comArea As 
> ComAreaDefinition) As Boolean
>         _VFormFile.LoadScreen(_CurrentScreen)
>         _VFormFile.Show()
>     End Function
> 
> 
> Then, this routine would perform the Vreadfields which 
> basically blocks execution of my application until _KeyEntered = True
> 
>     Public Function VreadFields(ByVal comArea As 
> ComAreaDefinition) As Boolean
>         _VFormFile.Focus()
>         _KeyEntered = False
>         Do Until _KeyEntered
>             System.Windows.Forms.Application.DoEvents()
>         Loop
> 
>     End Function
> 
> Then, the form will raise events and set _KeyEntered = True  
> when there is user interaction and the main process will 
> catch those events like this:
>     Private Sub _VFormFile_LastKeyPressed(ByVal key As 
> Integer) Handles _VFormFile.LastKeyPressed
>         _KeyEntered = True
>         RaiseEvent LastKeyPressed(key)
>     End Sub
> The above routine just raises the event back to its caller.
> 
> This approach actually works but the Do Loop take 25% of the cpu.
> 
> So, my question is:  Is there a better way to accomplish what 
> I'm trying to do?  Can/How would I place this on a different 
> thread (if that's a way I should do it).
> 
> 
> Thanks,
> 
> 
> Dave Vorgang
> Senior Programmer / Analyst
> Medford School District - Information Technology
> (541) 842-1021 
> mailto:[email protected]<BLOCKED::mailto:Dave.Vor
[email protected]>


===================================
View archives and manage your subscription(s) at
http://peach.ease.lsoft.com/archives

===================================
View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.