|
Since this is obviously partial code, do you insert extItem into the bindinglist somewhere. The code you posted cannot find extItem in the list because it's not added to it.
|
|
|
|
|
yes, sure bindinglist has ListItems. Because it was in a long loop, i didn't add it to the code here. sorry it was not clear
|
|
|
|
|
Just a simple test case. Didn't know what your listitem type was, but it doesn't matter. The following works as expected:
System.Web.UI.WebControls.ListItem extItem;
System.ComponentModel.BindingList<System.Web.UI.WebControls.ListItem> normalExtItems
= new System.ComponentModel.BindingList<System.Web.UI.WebControls.ListItem>();
extItem = new System.Web.UI.WebControls.ListItem("A","1", true);
normalExtItems.Add(extItem);
if(normalExtItems.Contains(extItem)) {
}
Have you checked (using debugger) that the list actually contains the item you're interested in.
|
|
|
|
|
yes, no matter the list has the item or not, it always returns false, i have checked that so many times
|
|
|
|
|
Did the test case work for you?
Also the Contains method checks if the actual object is present in the list so if you create a similar object (all the properties are the same) it won't find it since it's not the same object.
|
|
|
|
|
Hello All,
Is that possible to initialize particular class on server (Remote Object) based on type of client (Web or windows)? If Web client makes call then initialize class X else initialize class Y, is this possible?
Thanks.
modified on Sunday, November 30, 2008 11:26 PM
|
|
|
|
|
|
How do I make my groupBox wait until the process finishes?
private void button1_Click(object sender, EventArgs e)<br />
{<br />
groupBox1.Show();<br />
button2.Hide();<br />
int count=0;<br />
string oneline="";<br />
if (!Directory.Exists(textBox1.Text)) Directory.CreateDirectory(textBox1.Text);<br />
<br />
for (int i = 0; i < listBox1.Items.Count; i++)<br />
{<br />
oneline = listBox1.Items[i].ToString().ToLower();<br />
if (oneline.EndsWith(".mts"))<br />
{<br />
string infile = label1.Text+ oneline;<br />
string outfile = textBox1.Text + oneline;<br />
File.Copy(infile,outfile,true);<br />
label2.Text= "Exporting: " + infile;<br />
count++;<br />
}<br />
}<br />
<br />
label3.Text = count + " Files Copied ";<br />
button2.Show();<br />
}<br />
<br />
private void button2_Click_1(object sender, EventArgs e)<br />
{<br />
groupBox1.Hide();<br />
}
|
|
|
|
|
Since you're not using threads, I see no reason why label3.Text would be set before the loop is over. Have you used debugger to verify the logic.
Also if you have some text in the label3, could it be from previous button click since you're not resetting the text in the beginning of this method.
|
|
|
|
|
Hi George,
the way I understand your code, the following is going on:
1. as long as files are being copied your GUI is dead, since the GUI thread can't do useful things as long as it is busy executing button1_Click handler; that is a no no,
an event handler should not take longer than the time a user is willing to wait, it should always remain responsive to window moves, window getting uncovered, etc, so each handler should run in less than say 30 msec, something yours is not guaranteed to do.
2. as a result, the label2 text updates do not show
3. however the label3 text update behaves as you would like it to occur: after all the file copying has been done.
The solution to all the above is:
1. use a Thread or easier yet a BackgroundWorker to do most of what your Click routine does, so the Click routine just fires the BGW and returns immediately.
2. don't forget to apply whatever it takes to avoid cross-thread control operations (i.e. either Control.InvokeRequired/Control.Invoke when using a Thread, or using BGW.Progress when using a BGW).
Furthermore you may want to add some try-catch logic around the File.Copy stuff since it may fail for one of several reasons (destination exists, disk full, whatever).
Greetings,
|
|
|
|
|
TNX: Luc
That will take me some time to digest but since the program is copying files from a camcorder video chip it could take possibly over one hour so I guess I will have to implement your suggestion. You always challenge this near senile old man. I guess I will have to do a quick run through the files and calculate the length of the files to implement the progress bar. I did find the Background Worker example code on the "Code Project" but it will take some time to peruse.
|
|
|
|
|
Hi George,
you're welcome. And I don't see you as a near senile old man, I rather see you as a man with many trades, who is experienced in programming and wants to keep up with ever evolving technologies. Which is great.
BTW You don't have to implement a progress bar if you don't need one, the names of the BGW properties and events are only suggesting that you do, but you could simply set the label2 text in the Progress event, and the label3 text in the Completed event (both these events solve the cross-thread problem for you, since they fire on the GUI thread automatically).
FYI: you might want to add a "Cancel" button and check the completion reason and adapt the text accordingly, e.g. adding a "Canceled" message if the Cancel button got pressed.
Enjoy!
|
|
|
|
|
Luc
I got your suggestion working there are still a few rough spots but I am sure I will be able to get them resolved in time. I have several other programs that copy large quantities of multi media files and now that I understand the problem I will have to implement a "Background Worker" there also.
TNX
also TNX to Andrew Weiss for his well commented tutorial I reccomend it for anyone having similar problems with long running processes.
http://www.codeproject.com/KB/cpp/BackgroundWorker_Threads.aspx[^]
|
|
|
|
|
Hi George,
good for you.
I didn't know the article you referred to, but it is quite good indeed.
One thing it did not mention is you can pass an arbitrary object through the optional second parameter "UserState" of ReportProgress(); e.g. a progress string could be useful there.
Cheers.
|
|
|
|
|
Hello everyone,
I am using the following code to serialize a Type1 object instance and deserialize the object instance into a Type2 object instance.
There is exception when I deserialize, which says can not convert from Type1 to Type2. My question is, even if the content of two types are compatible (both Type1 and Type2 contain a single int field), we can not deserialize into different types?
[Serializable]
public class Type1
{
public int abc;
}
[Serializable]
public class Type2
{
public int cba;
}
public class Program
{
static void Main(string[] args)
{
Type1 input = new Type1();
input.abc = 12345;
Type2 output = new Type2();
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("output.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, input);
stream.Close();
stream = new FileStream("output.bin", FileMode.Open, FileAccess.Read, FileShare.None);
output = (Type2)formatter.Deserialize(stream);
return;
}
}
thanks in advance,
George
|
|
|
|
|
You can't cast two unrelated classes. This is no a deserialization issue, you will get a compiler error if you try to do this at compile time:
Type1 input = new Type1();
Type2 output = (Type2)input;
Cannot convert type 'Type1' to 'Type2'
Since deserialization happens at runtime you won't get a compiler error but a runtime error.
If you need to share common functionality then both should inherit from the same base class. If this is not possible then you have to copy the field values from Type1 over to Type2.
regards
modified on Sunday, November 30, 2008 10:18 AM
modified 12-Sep-18 21:01pm.
|
|
|
|
|
|
I'm looking for ideas on how to implement audit trails for my objects in C#, for the current project,basically I need to:
1.Store the old values and new values of a given object. 2.Record creation of new objects. 3.Deletion of old object.
Is there any generic way of doing this,like using C# Generics,so that I don't have to write code for events of the base object like on creation,on deletion etc.(ORM objects).The thing is that if there was a way to inject audit trail if one is using a .Anybody have any experiences or any methods they follow.Any way to do this in a Aspect-oriented (AOP) mannner.
Please share your ideas etc.
|
|
|
|
|
PostSharp[^] might be what you are looking for. It injects AOP information at compile time to your objects, so you can do the sort of things you mentioned.
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
I already has castle.net as aop
|
|
|
|
|
I've use Phil Laureano's LinFu to do this type of thing.
|
|
|
|
|
Hi All,
1. Do you know if I can (and how) create an alias to the sql server via code ? what objects do I use and how ?
2. Can I configure the sql server remote access control via code (TCP/IP and name pipes) ?
Thanks
|
|
|
|
|
|
Hi Mika, thanks for your reply.
The configuration part is what I was looking for.
Regarding the alias:
In the SQL Tools -> SQL Server configuration manager ->
under SQL Native client configuration
you can create new alias to a server.
How can I do it using code ?
Thanks
|
|
|
|
|