|
Thank you !
But if I create a standart Windows Form with Visual studio standart controls (the same number of controls) , there's no delay.
I found this article , but I don't know how to use-it :
http://www.codeproject.com/Articles/31316/Pre-compile-pre-JIT-your-assembly-on-the-fly-or-tr
where should I put and how can I call ?
thank you !
|
|
|
|
|
That's not going to do what you think it's going it.
Your problem, as I think you put it, is that every time you try to open the same form it takes forever. That means the code has already compiled into native assemblies and cannot be sped up any more.
It sounds as though you need to talk to DevExpress support on this problem.
|
|
|
|
|
Thank you !
Maybe I was not very clear.
Only the first time when I open the form there's a delay.The second time it's ok.
But everytime I open a new form for the first time there's delay.
so , how can I use the code on the article ?
Thank you !
|
|
|
|
|
Forget the code in the article.
All you need to do to get the same effect, to try this out, is NGEN. Open up a Developer Command Prompt (under Start -> Microsoft Visual Studio 20xx - Visual Studio Tools - Developer Command Prompt). The command line will be something like this:
ngen install C:\somepath\myexecutable.exe
Once that's done, launch your .EXE and see what happens.
If you're still having the problem, contact DevExpress about it. It's their controls you're using.
|
|
|
|
|
Hello !
But in my scenario the installation doesn't allow me to process the application with NGEN
So I'm thinking to use some code inside my application.
If you can explain to me how to use the code , this will be a great help for me.
Anyway , Thank you !
|
|
|
|
|
DID IT WORK ON YOUR MACHINE?!?!?!
We're nowhere near making a installation package for your application yet! We're testing a problem here!
|
|
|
|
|
Yes.
It's working on my machine
|
|
|
|
|
After you NGEN'd the resulting .EXE?? Did the problem go away entirely??
You ran the NGEN command line on your resulting .EXE, then you launched that .EXE file. You DID NOT LAUNCH IT FROM INSIDE Visual Studio! Correct??
|
|
|
|
|
|
OK, then it's easy. When you package your application for distribution, you can use something like InstallShield 2012 or better, on your .NET assembly Components, check the box that says ".NET Precompile Assembly". Done.
Why do you think you can't use NGEN??
Doing what that article says is the pain in the ass away to do it and, unless you know what you're doing, you can easily miss assemblies in your application. That methods is showing you how to do it for one assembly, not ALL of your application assemblies.
|
|
|
|
|
I read that using NGEN depend on target machine , and we should use the NGEN on every machine ???
This is what I have found :
"The idea behind NGen is that when your application is installed on the target machine, the JIT is triggered to compile our entire set of managed assemblies, and generate a native image for the application. Afterwards, when the application is launched, the CLR will make sure to load the correct native image from the disk, and so avoid unnecessary jitting
The problem with NGen is that it's quite complicated to use, and if we are really looking to avoid performance penalties during our application&'s initialization, we will have to spend more of our valuable time in order to register our assemblies in the GAC, correctly set our DLL's base addresses in order to avoid rebasing, etc"
it's correct or I read the wrong article ?
And as alternative to the previous code , I have found another code that load all the assemblies , but again I don't know how to use it :
public static void ForceLoadAll(Assembly assembly)
{
ForceLoadAll(assembly, new HashSet());
}
private static void ForceLoadAll(Assembly assembly,
HashSet loadedAssmblies)
{
bool alreadyLoaded = !loadedAssmblies.Add(assembly);
if (alreadyLoaded)
return;
AssemblyName[] refrencedAssemblies =
assembly.GetReferencedAssemblies();
foreach (AssemblyName curAssemblyName in refrencedAssemblies)
{
Assembly nextAssembly = Assembly.Load(curAssemblyName);
if (nextAssembly.GlobalAssemblyCache)
continue;
ForceLoadAll(nextAssembly, loadedAssmblies);
}
}
Thank you !
|
|
|
|
|
Yeah, you read the wrong article.
The command line for NGEN is simple:
C:\Windows\Microsoft.NET\platform\frameworkVersion\NGEN.EXE /install myexecutable.exe
Really? How hard was that?
You run it for each executable and .DLL in your application.
Now, if you set the option in the component in your installer, you don't have to worry about the command line at all. The installer does it for you!
|
|
|
|
|
Thank you !
I understand that the only existing option for you is NGEN.
Anyway thank you !
|
|
|
|
|
No, it's the option that works in 99% of cases.
I don't know about you, but I do my JIT'ing once, at install time, not on every launch of my code.
|
|
|
|
|
Ok but a normal exe file ( without using NGEN ) do JIT'ing on first start of a form with these controls ( but on every time I use the application ) .Now I want to use a code that do this process on every time that I use the application , but on a fixed point of execution ( for example on login page) and not when the forms are open.
Anyway , this is only my opinion. But it's so difficult for you to show me a way how to use the code for doing this process. I want just to try both the alternatives.
Thank you !
|
|
|
|
|
alejx wrote: Ok but a normal exe file ( without using NGEN ) do JIT'ing on first start of a form with these controls ( but on every time I use the application )
No, it doesn't. The JIT happens once, the first time the code is executed. A native image is generated and put into the native image cache.
When you run the code from inside Visual Studio, that native image only lasts for the one time you run the project. When you run the project again, a new .EXE is generated and new native images are generated as the code is executed. This happens every time you run the project from inside Visual Studio.
alejx wrote: But it's so difficult for you to show me a way how to use the code for doing this process. I want just to try both the alternatives.
The reason I don't recommend do it that way is because if you don't understand the code and why it works you can't support it in the future. What if the code no longer does what you assume it's should be doing anymore? What are you going to do then??
That's why I don't recommend you use it.
|
|
|
|
|
Ok I try to use NGEN.
But I have a last question ( that maybe has nothing to do with this case but maybe yes ).
I'm thinking to use a code protection software , (like .Net Reactor) to protect my job.
This software implement these protections to exe file :
NecroBit Protection
Native Code generation
Obfuscation
Control Flow Obfuscation
String Encryption
Anti Tampering
Resource Encryption and Compression
Dependency Merging
Now , if I protect the .exe file , after is possible to use NGEN ?
Thank you !
|
|
|
|
|
You're going to have to ask the provider of the software you're going to use.
But, in general, yes, you can use NGEN with obfuscators.
|
|
|
|
|
If I were in your shoes, this is what I would try:
Put some of the DevExpress controls onto the Login form, but make them invisible. This will force them to load, and hopefully your other forms will be much snappier.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
In VB.Net
Any Text Control (TextBox, RichTextBox, etc...)
Is it possible to bold a highlighted/particular text in a control?
Thanks...
I did't do that...
|
|
|
|
|
With a TextBox, you can only set the font and fontweight for the whole string. With the RichTextBox you can set any amount of fonts and font weights to your hearts desire. To set the current selected text to bold, or if it is already bold, set it to normal, you can use something like this :
With Me.rtb
If .SelectionFont IsNot Nothing Then
Dim currentFont As System.Drawing.Font = .SelectionFont
Dim newFontStyle As System.Drawing.FontStyle
If .SelectionFont.Bold = True Then
newFontStyle = currentFont.Style - Drawing.FontStyle.Bold
Else
newFontStyle = currentFont.Style + Drawing.FontStyle.Bold
End If
.SelectionFont = New Drawing.Font(currentFont.FontFamily, currentFont.Size, newFontStyle)
End If
End With
Hope this helps
Everyone dies - but not everyone lives
|
|
|
|
|
Thanks a lot, your code works perfectly...
I did't do that...
|
|
|
|
|
Glad to help.
Everyone dies - but not everyone lives
|
|
|
|
|
hansoctantan wrote: Any Text Control (TextBox, RichTextBox, etc...)
Is it possible to bold a highlighted/particular text in a control? No. You'd have to paint that part yourself.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Hi all,
I was just wondering;
From explorer you can right click on a file and select the print option.
This will print the document (Word, Excel, Visio etc).
How can I call this print option ?
Why you may ask?
Well this option will print any document that has an associated applicaion with it.
And it handles the document extension.
That is, you don't need to code for the specific file type.
Any thoughts ?
cheers,
dgoogle
|
|
|
|