|
Hey everybody
I'm really stuck with a problem that sounds pretty simple. Any kind of help with the problem (directing to an article) will be great!!!
I want to catch ALL EXCEPTION in my winform application, so in the worst case scenario the exception will be print to the debug viewer and won't throw the application.
In the application I'm using threads I'm creating, and threads that are being created for events. So there I can't think of a certain "root" place I can use try-catch in order to catch all the different exceptions.
Another other idea is to create "myThread" (something like that), and use only these threads to run everything, but threads in events are not being created by me (is there a way to change that?!).
As you can see, I'm a bit lost here...
Any help would be great!!!!
Thanks in advance!
|
|
|
|
|
You catch those exceptions by catching an event on your main form. Of course, that means when you log, you'll be at the root of your app, which makes recovery more difficult, although not impossible.
Christian Graus
No longer a Microsoft MVP, but still happy to answer your questions.
|
|
|
|
|
What are some of the best known tools available to detect memory leaks. I know of a couple like "Rational Purify" and Insure++. Any relative comparison figuring out the best preferably the ones which work better in terms of saving time and focus more on multi threaded environments.
|
|
|
|
|
This is not an exact answer to your question but you may use CLRProfiler for a quick check on your application. But if you are on a comprehensive project I am not sure if this tool would help...
Regards,
Always keep the Murphy Rules in mind!
|
|
|
|
|
It is a big comprhensive projects with millions of lines and 100 of vcproj in it.
|
|
|
|
|
tom groezer wrote: It is a big comprhensive projects with millions of lines and 100 of vcproj in it.
Then you are clearly in the wrong place! Now head off to the C++ forum.
|
|
|
|
|
Hi
my problem is i did'nt find any Good resourece for API i must learn structured storage API so i will use this function "StgIsStorage" "StgOpenStorage" but the prammeter of that functions i dont know what the value i will give it , i found it so complex
can u help me pleasegt
Thankx
Amani
|
|
|
|
|
That's a very loose question. www.pinvoke.net has the p/invoke signatures to call these methods from C#. The MSDN and other sites have examples of the sort of values you pass when you use these methods.
Christian Graus
No longer a Microsoft MVP, but still happy to answer your questions.
|
|
|
|
|
Hi All,
I got two txt files that are StreamReader into my program, now i would like to compare those two files line by line, however, the following codes are not working coz it won't loop the first while loop until the second while loop finishes.
StreamReader sr = new StreamReader("c:\\asmx\\Hand_Written_Result.txt");
StreamReader sr1 = new StreamReader("c:\\asmx\\Auto_Generated_Result.txt");
while ((line = sr.ReadLine()) != null)
{
while ((line_1 = sr1.ReadLine()) != null)
{
Assert.AreEqual(line, line_1);
i++;
}
i++;
}
Thanks a lot
|
|
|
|
|
Your approach seems not correct.
You may try this one:
while (sr != sr.EndOfStream || sr1 != sr1.EndOfStream)
{
line = sr.ReadLine();
line_1 = sr1.ReadLine();
if(!String.IsNullOrEmpty(line) && !String.IsNullOrEmpty(line_1))
{
Assert.AreEqual(line, line_1)
}
}
Hope this helps,
Always keep the Murphy Rules in mind!
|
|
|
|
|
|
It appears you don't understand while loops. I recommend reading up on them.
one possible solution is
while(line = sr.ReadLine() != null && line_1 = sr1.ReadLine() != null)
{
]
Christian Graus
No longer a Microsoft MVP, but still happy to answer your questions.
|
|
|
|
|
|
Look at the following code
<br />
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();<br />
...<br />
ExcelApp.Quit();<br />
The Excel object is not release after 'Quit()' method(Excel is still in the background process list).I think it is because there is still a reference of the object.
I a windows application,this will be solved when I close the application. But I'm using these code in an asp.net application.Every time they execute,the background process list grows.
Is there any way to relase the object or Is there any code to read excel files without using Microsoft Excel?
|
|
|
|
|
Set it to null first.
Ahsan Ullah
Senior Software Engineer
|
|
|
|
|
|
Thank you for your reply.But I stiil face a problem:
<br />
private void NullAndRelease(object runtimeObject)<br />
{<br />
if (runtimeObject == null)<br />
return;<br />
try<br />
{<br />
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(runtimeObject);<br />
}<br />
finally<br />
{ <br />
runtimeObject = null; <br />
}<br />
}<br />
private void button1_Click(object sender, EventArgs e)<br />
{<br />
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();<br />
object NullParam = System.Reflection.Missing.Value;<br />
Workbook Book = ExcelApp.Workbooks.Open(FileName, 0, true, NullParam, NullParam, NullParam,<br />
true, NullParam, NullParam, false, false, NullParam, false, true, NullParam);<br />
Worksheet Sheet = Book.Worksheets[1] as Worksheet;<br />
Range UsedRange = Sheet.UsedRange;<br />
<br />
Range Cell = null;<br />
int RowCount = UsedRange.Rows.Count;<br />
for (int i = 2; i <= RowCount; i++)<br />
{<br />
Cell = UsedRange.Cells[i, 1] as Microsoft.Office.Interop.Excel.Range;<br />
Cell = UsedRange.Cells[i, 2] as Microsoft.Office.Interop.Excel.Range;<br />
Cell = UsedRange.Cells[i, 3] as Microsoft.Office.Interop.Excel.Range;<br />
Cell = UsedRange.Cells[i, 4] as Microsoft.Office.Interop.Excel.Range;<br />
Cell = UsedRange.Cells[i, 5] as Microsoft.Office.Interop.Excel.Range;<br />
Cell = UsedRange.Cells[i, 6] as Microsoft.Office.Interop.Excel.Range;<br />
NullAndRelease(Cell); <br />
}<br />
NullAndRelease(Cell);<br />
NullAndRelease(UsedRange);<br />
NullAndRelease(Sheet);<br />
if (Book != null)<br />
Book.Close(false, NullParam, false);<br />
NullAndRelease(Book);<br />
ExcelApp.Quit();<br />
NullAndRelease(ExcelApp);<br />
GC.Collect();<br />
GC.WaitForPendingFinalizers(); <br />
}<br />
These code works well.But when I add the following code in the for loop:
<br />
Cell = UsedRange.Cells[i, 7] as Microsoft.Office.Interop.Excel.Range;<br />
The server does not shut down. It seems that I can only read not more than 6 cells.That's why?
|
|
|
|
|
Here is a code piece from Visio Code Librarian:
private void NullAndRelease(object runtimeObject)
{
try
{
if (runtimeObject != null)
{
int referenceCount = System.Runtime.InteropServices.
Marshal.ReleaseComObject(runtimeObject);
while (0 < referenceCount)
{
referenceCount = System.Runtime.InteropServices.
Marshal.ReleaseComObject(runtimeObject);
}
}
}
finally
{
runtimeObject = null;
}
}
I think you can also use this one for Excel too.
Regards,
Always keep the Murphy Rules in mind!
modified on Thursday, August 21, 2008 6:15 AM
|
|
|
|
|
There is no reason to call ReleaseComObject in a loop. Call FinalReleaseCOMObject instead, it sets the ref count directly to zero.
|
|
|
|
|
I am using visual studio 2003(FW 1.1).I filled a combobox using value member and display member from a datasource.when I run my project that combo box is hanging ,ie values are there in combobox but I cant select from that.(values are not populating).Comboboxes are working fine if I add Items using Item.Add() method.Any way to solve this problem as I need to get value member from that.Pls help me ....
with regards
thomas
|
|
|
|
|
Best guess is that your code to get the data from the source is hanging. Have you tried debugging to work out where it gets stuck ?
Christian Graus
No longer a Microsoft MVP, but still happy to answer your questions.
|
|
|
|
|
there is no problem while debugging.its a simple code , here it is ...
cmboobx.Datasource=Dataset.Tables[0];
cmboobx.Displaymember=string Display member ;
cmboobx.VauemEMBER=STRING VALUE MEMBER;
this is the code I used.But while running combobox is not hanging.we can select values using scroll in our mouse.But we cant click and select that value.
thank you for your reply friend.
|
|
|
|
|
I don't see how that's possible. You can scroll through the items, but can't select one ? What are you clicking, the items in a drop down list that appears ?
Of course, the code you posted is broken, it would not even compile. what does your code really look like ?
Christian Graus
No longer a Microsoft MVP, but still happy to answer your questions.
|
|
|
|
|
sorry ..friend ,
I cant copy and paste code from here.That code is just a sample.
Here is the format
combobox1.DataSource=dataset1.Tables[0];
combobox1.DisplayMember="Name of column to be displayed";
combobox1.ValueMember="Name of column to be added as value";
|
|
|
|
|
Hi all
I facing problem while connecting C# with SQL server 2000
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Test;Data Source="source";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID="source";Use Encryption for Data=False;Tag with column collation when possible=False
in the exception
1. Keyword not suported: 'Provider'
if i remove Provider=SQLOLEDB.1, then exeption is
2. Keyword not suported: 'Use Procedure for Prepare'
and same for Use Encryption for Data=False, Tag with column collation when possible=False.
Plz....... help me!
Thanx in advance.
|
|
|
|