Use System.IntPtr. Use IntPtr.Zero where you would pass a NULL.
A common pattern is to wrap the HANDLE with a simple wrapper class that implements the IDisposable interface and has a finalizer (the ~ClassName function in C#, or an override of Finalize in VB.NET) which calls Dispose. Inside your override of Dispose you should suppress the finalizer using GC.SuppressFinalize (this allows the object's memory to be freed earlier if Dispose is called explicitly) then call whatever function frees the HANDLE.
I am building an application that will use Microsoft's ODBC .NET Data Provider. That is an extension that is not installed by default with the .NET framework. I would like my application to detect whether the data provider has been installed on the machine where it is running during startup.
You cannot do it using that technique. Probably, the only way to do it is using a 3rd party component. Try Aspose.com. I have not tried their Excel component, but their PDF one worked very well - we stream the PDF directly to the browser, no temp file.
I read from a Microsoft guide on Performance (www.serverside.net) and it says that Windows Services uses Workstaton GC even Server has multiple CPU. The conclusion seems to be that we should not host TCP Remoting in WinSvcs.
(1) Is the above true or false ? (I have seen various opinion on this)
(2) How to configure to use Server GC (
I have some idea but not sure about it. But I will open source it so everyone can comment later.
If the .NET Framework is implicitly loaded, by loading a managed executable or loading a library into a process where the Framework isn't already loaded, the Workstation GC will always be used. To use the Server GC, you must explicitly load the framework by calling CorBindToRuntimeEx, exported by mscoree.dll.
Thanks for your "real-time" response.
I have read both articles: The 1st is great in concept and the 2nd has
My Company blocked Blogging so I have to wait till after 6pm at home to read.
I basically modified Steven Pratschner's code and made a Windows Services (.net) that calls Unmanaged API CorBindToRuntimeEx to run a remoting host code. (Just like you said). It really works as a TCP Remoting Host.
Though My problem is that I would rather not use my code since it does not have PROVEN scalability in production.(and I do not have 8-CPU machine anyway)
Is there any code I can download that has been proven ?
PS. I have no problem upload my code onto www.codeproject.com, so that we developer can improve and test it in this community.
I am using a commercial protocol stack that calls a registered callback function to receive data when the driver it talks to has done it's thing and has new data to report. The sample code that came with the stack uses PostMessage from the Win32 world to send a local copy of the data back to the host GUI/window message parsing thread. This is to avoid thread crossing problems, etc.
I want to do the same thing with a new .NET application. But, I can't see a way to do it. I can't spawn a new thread, call invoke, etc. because I have to follow the signature of the callback function. I can't just add the callback function into my form namespace for the same reason. I can't call PostMessage because .NET hides the message pump parsing and I don't know how to add handling a custom message, assuming I could succesfully send it. IMessage doesn't see to apply... It seems like this would be an easy question.
I'm developing a setup project. Can you help me with these queries
- How do I get the installation path the user enters at runtime
- How can I copy some files to specified location eg:C:\temp
- How can I check for existence of a particular folder? Is it possible with Launch Condition. If not how can I do it?
-'User Interface -Add Dialog '- How can I get the values entered in the textboxes at runtime and pass it to my application?
- Custom Action properties , properties- Installer Class - true / false signify ?
- How do I start an application when Installation completes ?
Thankx in advance
I'm a little confused about what you are trying to do here. ASCII is not capable of displaying the full range of letters for all character sets. That is one of the reasons why we have Unicode!
It seems like expected behavior to me, or at least not unexpected. If you have an international application, then you should stick to unicode only, if at all possible. Heck, you should probably stick to unicode even if you're not.
If your challenge is that you need to transmit data over a medium that only supports ASCII, consider Base64 encoding.
For example the data sent was "abcdefüüü"... its a unicode string with special characters.. now the programmer(not a .NET programmer) who sent me the data said that he converted this unicode string to UTF8 first before sending it to the stream...
Now when i got the data from my side, the new string is "abcdefA¼A¼A¼"..
what i need to do is make the string back to "abcdefüüü"..
See "About ASCII Encoding class" in the SDK. The encoding always results in 7 bit characters. It always excludes the extended ASCII characters, i.e. those in the range of 128-255. They will be converted as "?", which has an ASCII byte code of 63.
I do not think you can do what you want with the ASCIIEncoding class. I think perhaps Encoding.Default will work as you expect. This will return an encoding for the system's current ANSI code page. I'm not sure what that means exactly in terms of byte values, but it sounds promising.
I wrote about the difference between ASCII and 8-bit character sets here[^]. The encoding that the .NET Framework refers to as 'Unicode' is UTF-16 (Little Endian). The encoding referred to as 'Ascii' is ISO-646-US, a 7-bit encoding. Only the code points from 0 to 127 have any meaning; any code outside this range is simply translated to '?'.
If you want to convert an array of bytes representing characters into a System.String object, you must know what character set they represent, and what Windows code page that corresponds to. Windows code page numbers are listed at http://www.microsoft.com/globaldev/reference/WinCP.mspx[^].
For converting UTF-8 to a System.String, you can use the object returned by the System.Text.Encoding.UTF8 property.
I was wondering if any of you know if the following is possible : Run an applet, a service...which would act as an FTP client but the connection to the remote server should be initiated from the server side and not the client side! There are hundreds of good client side FTP client but no server side apparently. The reason why I'm asking is that I need an FTP client but I cannot connect to the target FTP server from the client, only from the server where the web service is running.
Thanks in advance !
I know exactly what is blocked but I wanted a solution like : the web client connect to a web server and there I would run an applet/component on the server side. The server manage the FTP connection and allow basic features.
Of course the easiest solution is HTTP but I have to stick to FTP.
Not possible ? What's the reason ?
Mike already said it. It is simply NOT possible. Because that's not how FTP works. FTP servers 'listen' for connections and client 'connect' to server. PERIOD. If somebody gave you a requirement to stick to FTP it is just silly, because it cannot be done. Unless you do it other way around. Your app starts up an FTP Server and the server starts an FTP client and uploads a file to your client's FTP 'server', but that's just stupid.
Last Visit: 31-Dec-99 19:00 Last Update: 28-Jan-22 12:40