PC Review


Reply
Thread Tools Rate Thread

Custom Event Logging / Shared Class

 
 
CJ Taylor
Guest
Posts: n/a
 
      2nd Sep 2003
Hey all,

This is probably a dumb question, but still feeling a little strange from
Labor day festiviities. Anyways,

I want a shared sub, at least something that is easy to call from any one of
my classes within the scope of my project (or that which inherits/imports
this class).

Basically, want them to be able to call a sub defined as

Public Shared Sub LogEvent (sender as object, e as
MWC.BCTransfer.Logger.LogEventArgs)

now tihs is fine... but if the UI is active, I want it to push information
to a listview I have.

Now I can call the LogEvent routine fine, but if I try to access a UI
function, I obviuosly can't.

How do I get around this?

Thanks,
CJ


 
Reply With Quote
 
 
 
 
Benny Mathew
Guest
Posts: n/a
 
      2nd Sep 2003
Hi,
You cannot call non shared members of a class from the shared method
without making an instance of it and then calling it on that instance.

Cheers
Benny


CJ Taylor wrote:

> Hey all,
>
> This is probably a dumb question, but still feeling a little strange from
> Labor day festiviities. Anyways,
>
> I want a shared sub, at least something that is easy to call from any one of
> my classes within the scope of my project (or that which inherits/imports
> this class).
>
> Basically, want them to be able to call a sub defined as
>
> Public Shared Sub LogEvent (sender as object, e as
> MWC.BCTransfer.Logger.LogEventArgs)
>
> now tihs is fine... but if the UI is active, I want it to push information
> to a listview I have.
>
> Now I can call the LogEvent routine fine, but if I try to access a UI
> function, I obviuosly can't.
>
> How do I get around this?
>
> Thanks,
> CJ
>
>


 
Reply With Quote
 
CJ Taylor
Guest
Posts: n/a
 
      2nd Sep 2003
Thanks benny,

I was sure on that part, but does anyone know of a method to do this? Like
to write a good / simple event logger?

I suppose I could do inherited stuff, but I was hoping for something
simplier.

Thanks,
CJ
"Benny Mathew" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Hi,
> You cannot call non shared members of a class from the shared method
> without making an instance of it and then calling it on that instance.
>
> Cheers
> Benny
>
>
> CJ Taylor wrote:
>
> > Hey all,
> >
> > This is probably a dumb question, but still feeling a little strange

from
> > Labor day festiviities. Anyways,
> >
> > I want a shared sub, at least something that is easy to call from any

one of
> > my classes within the scope of my project (or that which

inherits/imports
> > this class).
> >
> > Basically, want them to be able to call a sub defined as
> >
> > Public Shared Sub LogEvent (sender as object, e as
> > MWC.BCTransfer.Logger.LogEventArgs)
> >
> > now tihs is fine... but if the UI is active, I want it to push

information
> > to a listview I have.
> >
> > Now I can call the LogEvent routine fine, but if I try to access a UI
> > function, I obviuosly can't.
> >
> > How do I get around this?
> >
> > Thanks,
> > CJ
> >
> >

>



 
Reply With Quote
 
Jeremy Cowles
Guest
Posts: n/a
 
      2nd Sep 2003
> Now I can call the LogEvent routine fine, but if I try to access a UI
> function, I obviuosly can't.
>
> How do I get around this?


Why would you want to? That's the real question... The fact that you hit a
wall is just an indicator that you are trying to break the rules of "good
OOP" design (or whatever). You have:

Logger.Log(o, e) - Takes in a source object, logs an event

This is the object you use for storing information, I would say that you are
trying to mix your data/information with your UI, and this is generally bad.
The alternative would be to log the information (storing it in however you
want), and then provide access to that log data via some shared Property or
Method, then your UI is still independant of your information:

Public Class Logger
Public Shared Sub LogEvent( sender as Object, e as LogEventArgs)
...
RaiseEvent LogAdded(...)
End Sub

Public Shared Property EntryCount as Integer
Public Default ReadOnly Shared Property Item(index as Integer) as
LogObject
End Class

Now when your list updates, it can just read the Item property of the
logger:

'// Client Code
ListView.BeginUpdate
ListView.Items.Clear

For I as Integer = 0 to Logger.EntryCount
ListView.Items.Add ( log )
Next

ListView.EndUpdate


What do you think?

~
Jeremy

 
Reply With Quote
 
CJ Taylor
Guest
Posts: n/a
 
      2nd Sep 2003
Perfect Jeremy,

That was the goal, I was just struggling a little this morning to think
about how I wanted to do it...

Also, I think that because I'm doing this within a separated DLL, I'll do it
kinda like how MSCOMCTL was done in the past, where I will raise my own
dialogs as well, kinda like a built in UI to the DLL so its uniform, but
also make the Loglist (XML Data of the logged events) public readonly that
way other applications can get a handler on it, and add an event like you
said to say when its raised, another UI that is wrapping that DLL can be
notified, and therefore, pull updated event data...

I could see where this could become cumbersome (especially if you had large
amounts of Event Data), so maybe even add a property about 'last event
added." or something...

I don't know... thoughts?

-CJ
"Jeremy Cowles" <jeremy.cowles[nosp@m]asifl.com> wrote in message
news:uu25b.24$(E-Mail Removed)...
> > Now I can call the LogEvent routine fine, but if I try to access a UI
> > function, I obviuosly can't.
> >
> > How do I get around this?

>
> Why would you want to? That's the real question... The fact that you hit

a
> wall is just an indicator that you are trying to break the rules of "good
> OOP" design (or whatever). You have:
>
> Logger.Log(o, e) - Takes in a source object, logs an event
>
> This is the object you use for storing information, I would say that you

are
> trying to mix your data/information with your UI, and this is generally

bad.
> The alternative would be to log the information (storing it in however you
> want), and then provide access to that log data via some shared Property

or
> Method, then your UI is still independant of your information:
>
> Public Class Logger
> Public Shared Sub LogEvent( sender as Object, e as LogEventArgs)
> ...
> RaiseEvent LogAdded(...)
> End Sub
>
> Public Shared Property EntryCount as Integer
> Public Default ReadOnly Shared Property Item(index as Integer) as
> LogObject
> End Class
>
> Now when your list updates, it can just read the Item property of the
> logger:
>
> '// Client Code
> ListView.BeginUpdate
> ListView.Items.Clear
>
> For I as Integer = 0 to Logger.EntryCount
> ListView.Items.Add ( log )
> Next
>
> ListView.EndUpdate
>
>
> What do you think?
>
> ~
> Jeremy
>



 
Reply With Quote
 
Jeremy Cowles
Guest
Posts: n/a
 
      2nd Sep 2003
> I could see where this could become cumbersome (especially if you had
large
> amounts of Event Data), so maybe even add a property about 'last event
> added." or something...
>
> I don't know... thoughts?


You could create an [Before|After]LogEntryAdded event, and make the
EventArgs hold the data for the Entry that was added.

Public Sub logger_LogEntryAdded(o, e) handles x.x
List.Add( e.Entry.ToString( ) )
End Sub

?

~
Jeremy

 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: EIL Logging to Custom Event Log? Henning Krause [MVP - Exchange] Microsoft Dot NET Framework 0 22nd Apr 2008 07:14 AM
Shared List from Compiler in a class with an event declaration =?Utf-8?B?THVjYSBQaW5hc2Nv?= Microsoft VB .NET 0 21st Nov 2007 11:53 AM
using custom event logging for my window service TonyJ Microsoft C# .NET 0 30th Oct 2007 12:01 PM
Trace Class with Event Logging and Http Upload Pete Smith Microsoft Dot NET 1 23rd Jan 2006 07:26 PM
How to raise event in a List Item class and cause an event in the custom List class moondaddy Microsoft VB .NET 3 5th Apr 2005 07:27 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 10:00 AM.