|
I have to keep fighting the urge to assume everthing's like C++, but that seems to be right.
I tried creating an object as described, caught the exception in the function where the object was created, and nothing was returned. That is, since the constructor never finishes, a pointer to the object (ahem, I mean a reference to the "reference type") never gets assigned. I would imagine the object actually gets created on the gc heap before the constructor is called, or else nothing could be assigned in the ctor, but that only the gc knows about it if the ctor fails (interrupted by an exception).
The destructor (finalize method in framework paralance) does eventually get called, when the gc gets around to it. I forced it by calling GC.Collect(), and all was fine.
Cheers
|
|
|
|
|
That's basically right.
The one exception to watch for is if any non-managed memory gets allocated as part of your constructor sequence, you need to put cleanup code in a handler for that case.
Generally you'll know if you're doing this directly, but if you create any objects that implement IDisposable, you should try to call their Dispose method. For example, Windows Forms Controls allocate a window handle. Its better to call Dispose on them before they become unreachable rather than wait for the GC to do it.
Burt Harris
|
|
|
|
|
I'm trying to expose my custom WMI class:
/////////////////////////////////////////////////////
[assembly:Instrumented("Root/Default")]
[System.ComponentModel.RunInstaller(true)]
public class MyInstaller : DefaultManagementProjectInstaller {}
[InstrumentationClass(InstrumentationType.Instance)]
public class InstanceClass : Instance
{
public string SampleName;
public int SampleNumber;
public void DoSomething()
{
//Doing something...
}
}
....
InstanceClass instClass = new InstanceClass();
instClass.SampleName = "Hello";
instClass.SampleNumber = 111;
instClass.Published = true;
/////////////////////////////////////////////////////
But when I try to invoke DoSomething method:
/////////////////////////////////////////////////////
ManagementObjectSearcher s = new ManagementObjectSearcher(new ManagementScope("Root/Default"),new SelectQuery("InstanceClass"));
foreach (ManagementObject ob in s.Get())
{
ob.InvokeMethod("DoSomething",null);
}
/////////////////////////////////////////////////////
I get System.Management.ManagementException stating that this method is not implemented
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObject.GetMethodParameters(String methodName, ManagementBaseObject& inParameters, IWbemClassObjectFreeThreaded& inParametersClass, IWbemClassObjectFreeThreaded& outParametersClass)
at System.Management.ManagementObject.InvokeMethod(String methodName, Object[] args)
at WMIClient.Form1.button1_Click(Object sender, EventArgs e) in e:\_projects_\dotnet_projects\_tests_\wmiclient\form1.cs:line 126
However, I can successfully set and get values of data members:
/////////////////////////////////////////////////////
lb1.Items.Add((string)ob.GetPropertyValue("SampleName"));
/////////////////////////////////////////////////////
Do I need some additional actions to be taken before I call InvokeMethod, or maybe
I have something wrong with the method definition?
Is it possible at all to expose methods in WMI custom classes?
Best regards,
Eugene
|
|
|
|
|
I have a process where I am taking a schema, running a transform against it, and saving the resulting xml file. Today we do this manually with XMLSpy without problems. I would like to change this to be a programmatic function.
When I build my transform wihtin the framework, however, it requires me to feed it only an XML file. If I feed it an XSD file, it runs it through an XML validator and kicks out the file.
Is there a way of running a transform on a schema? Is there some way of turning off the xml validator? (and if so, how?)
Thanks for any input!!!
_____________________________________________
The world is a dangerous place. Not because of those that do evil, but because of those who look on and do nothing.
|
|
|
|
|
Is it possible to impersonate the caller of a method that is remoted? I have a remote component (which currently I'm planning to always run on the same machine as the client) that is hosted by a Windows Service. I want to run the service as LocalSystem yet impersonate the client user for some sections of code. Is this possible? Does it require COM+ and does that affect remoting?
|
|
|
|
|
I create a little graph using World Transformation for drawing lines and it works perfectly. But when It comes to draw a string, by DrawString() method, the string is distortedly displayed. The position is right but the size and scale of the font is also affected by the transformation. Is there anyway to fix this?
Ruxo Zheng
|
|
|
|
|
I'm trying to re-implement a project that I have previously written in C++ using ATL.
Basically, I want to implement a COM object using C# which is hosted inside a Windows Service. I have the COM object and the Window Service both implemented in the same C# project. I cant figure out how in .NET to specify that all instances of the object should be created remotely in the single Window service. I've seen how this can be done using Remoting however I'm wondering if they is any other alternative that will work from non .NET clients? Using ATL there was a way to register the COM class objects so that a single server process was used as the host. Is this effect possible with .NET?
|
|
|
|
|
I'm writing a Windows application using C#, targeted to run on Win9x/ME clients which log on through a NT domain server. I want to get the identity of the user and his/her roles to check authorization. I use System.Security.Principal.WindowsIdentity.GetCurrent() to get current identity and it works very well on Win2K/NT/XP but not on 9x/ME... I've searched in .NET document about this problem but found nothing about this.
So is there any trick to make WindowsIdentity works on Win9x? or do I have to use Win32 API to get username (I recall the function "GetUserNameEx" for user name but how to get its group or authentication status)?
Thanks
Ruxo Zheng
|
|
|
|
|
The reason it doesn't work is because 9x was never built with true networking and network security in mind. Thus you really don't have a true WindowsIdentity.
I don't know whether it's just the light but I swear the database server gives me dirty looks everytime I wander past.
-Chris Maunder
Microsoft has reinvented the wheel, this time they made it round.
-Peterchen on VS.NET
|
|
|
|
|
Thanks David.
Now I wonder how can IIS get a WindowIdentity from Windows 9x that running IE? Can I mimic the same behavior in our code (perhaps, by Win32 API)?
Ruxo Zheng
|
|
|
|
|
Hello All,
I am currently modeling a GIS geometry primitives like point, line, polyline, polygon etc.
Initially, I named everything according to the OpenGIS.org recommendations just to realize that .NET has the same name for Point and Rectangle.
My co-workers on Java project had no problem because in the Java2D, the names are Point2D, Rectangle2D etc.
GIS points are generally 3D but most applications are 2D.
What will you do?
(Please, I know about namespaces and I am using them, we just do not want to confuse the user of our products - it is a component not a standalone application so will be used by programmers.)
Best regards,
Paul.
Jesus Christ is LOVE! Please tell somebody.
|
|
|
|
|
Namespaces are an integral part of the .NET framework, or any good OOP language. Go ahead and use your own namespace. If programmers using .NET or Java, they should be used to qualifying (if they need to) your component objects by now.
|
|
|
|
|
Hi.
I HATE REGULAR EXPRESSIONS!
Oh, thats better.
Could someone do be a big favour and write a regular expression that will match to these examples. I'm doing a bit of URL Rewriting and its just causing me pain!
/resultsdownload_n_37.Zip
/resultsdownload_ma_3712.Zip
/resultsdownload_all_2337.Zip
/resultsdownload_out_121243.Zip
/resultsdownload_bottom_2321.Zip
/resultsdownload_fudgecake_1.Zip
Thanks guys. The Regex object is doing my head in!
E.g.
Why doesn't
/resultsdownload_net_37.Zip
match to
/resultsdownload_[a-z+]_37.Zip
???
Thanks again.
Pete
Pete
Insert Sig. Here!
|
|
|
|
|
Ah. Sorted it.
It seems my + was in the wrong place. It needs to be outside the [] not inside.
Heres the final result if anyone is interested
/resultsdownload_[a-z]+_[0-9]+\.zip
Pete
Insert Sig. Here!
|
|
|
|
|
i have a windows application which i previously written in others
computer using his microsoft visual studio .NET.
now, i had oledi made the change on the source code and want to
re-compile it using Microsoft .NET Framework SDK. this is becuase my
computer dun have license on microsoft visual studio .NET.
i was wondering how can i build my project which i previous done in
MSVS .NET by using Framework SDK command line? or is there any where
to generate a MAKE file in MSVS .NET and then build the entire project
using Framework SDK command line with the help of MAKE file?
thank you.
regards
yccheok
|
|
|
|
|
Check out NAnt[^], it has a program (called SLiNgshot, if I remember correctly) which will parse solution/project files and either product .build files to use with NAnt or build the solution/project.
Many people on the DOTNET lists have recommended its use for any real projects using .NET. Apparently the build system in VS.NET isn't very viable when working with large projects (there are several known bugs that occur when building dlls/exes that are larger than 64K).
Once you know how to compile the smaller bits and pieces using the commandline using NAnt is a breeze. Here's a tip, .resx files first get compiled by resgen before being listed as a resource by the C# compiler (cs.exe).
James
- out of order -
|
|
|
|
|
James T. Johnson wrote:
there are several known bugs that occur when building dlls/exes that are larger than 64K
Cheers
Martin
"Situation normal - all fu***d up"
Illuminatus!
|
|
|
|
|
Martin Häsemeyer wrote:
The bug relates to VS.NET locking the dll after building. There are a couple things that trigger it.
First you need to tell it to build into a different directory than the default; then you need to have Copy Local set to false in one or more projects that reference that assembly.
Someone from MS commented on it recently on one of the DOTNET lists, I don't remember what he said about it though.
James
- out of order -
|
|
|
|
|
James T. Johnson wrote:
The bug relates to VS.NET locking the dll after building. There are a couple things that trigger it.
First you need to tell it to build into a different directory than the default; then you need to have Copy Local set to false in one or more projects that reference that assembly.
Someone from MS commented on it recently on one of the DOTNET lists, I don't remember what he said about it though.
Well, OK! If it is such an effort to create the buggy behaviour it won't touch a lazy man like me
Cheers
and thanks
Martin
"Situation normal - all fu***d up"
Illuminatus!
|
|
|
|
|
Is there a way to create a new event that occurs AFTER the check state of an item changes?
Ingram Leedy
You can't depend on your eyes when your imagination is out of focus.
--Mark Twain
|
|
|
|
|
Just two suggestions though I don't know if they'll work:
1) You could override the mouse click event, and look wether the check state changed
2) You could override WndProc and try to intercept the corresponding Windows message, if it exists (might be a WM_NOTIFY with some code you can find in MSDN for the ListView common control)
Cheers
Martin
"Situation normal - all fu***d up"
Illuminatus!
|
|
|
|
|
Martin,
That sounds like something to explore. If I use ItemCheck and then change the check state of the item inside the event handler, then it fires ItemCheck again, and we go into a circle. I suppose I could set some toggle bit, but that seems like a hack.
It seems like in other controls, that AfterEvent handles, seem to ignore changes relating to that event. Is my thinking correct? Am wondering how they do it?
-- Ingram
Ingram Leedy
You can't depend on your eyes when your imagination is out of focus.
--Mark Twain
|
|
|
|
|
Ingram Leedy wrote:
It seems like in other controls, that AfterEvent handles, seem to ignore changes relating to that event. Is my thinking correct? Am wondering how they do it?
Maybe that's the case. But I don't know how this would be possible. Maybe for these controls only if the selection is changed via user input (mouse keyboard) the event get's fired and not if you change the property programmatically (event handler tied to the message an not the property). But if that isn't the case I don't think it would be possible to change the check state without goin into a loop, unless you override the property, but dunno if that's possible or even helps.
Cheers
Martin
"Situation normal - all fu***d up"
Illuminatus!
|
|
|
|
|
You might be right, perhaps these events get fired based on something else?
It seem like what I am trying to accomplish would be a common thing. I want to put custom checkbox images in the listview. I've done this with TreeView using Genghis CustomTreeView. (In that, I use treeView1_AfterCheck which works fine if I change image states programmatically) http://www.genghisgroup.com[^]
ListView however is giving me greef. Here is a snippet of code as a sample that increments the image of the checkbox, that once I change the image for the checkbox it fires a new event.
I also wrote a custom state listview that sets the images using an Interop
by sending the state changes directly using Win32. But it causes the event to fire just like the example code.
private void listView1_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
{
listView1.BeginUpdate();
int itemcheck2 = listView1.Items[e.Index].StateImageIndex;
Debug.WriteLine("Check image #: " + itemcheck2.ToString());
listView1.Items[e.Index].StateImageIndex = itemcheck2 + 1;
listView1.EndUpdate();
}
Thanks -- Perhaps someone has dealt with this.
Ingram Leedy
You can't depend on your eyes when your imagination is out of focus.
--Mark Twain
|
|
|
|
|
I'm working on a wrapper to simplify the usage of the .Net cryptography classes, and have a few questions
I need answers for before I can use/publish it:
1) I am currently creating the key byte array for each alg by hashing a text password with UTF8 encoding,
is this the best practice for generating the key?
I understand that a unique IV should be used for each encryption, so that blocks of identical data are
different even with the same key. I am currently storing the IV bytes at the beginning of the encrypted
file, and reading them back when decrypting.
2) Does the IV being exposed like this weaken the crypto?
3) Should I be encrypting the IV with the key and a known IV before storing it in the encrypted file?
|
|
|
|