|
Hi,
best is to use a delegate for this, and provide an event.
this[^] explains it.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
This is basic object oriented programming!
Expose a property or method in the Server class that allows you set the value from the label.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Don't repost the same question Remove the second one before someone answers and you can't remove it.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Hi all
I have a big issue with threading in Windows Forms.
For example:
I have a .NET 2.0 (VS 2008) Windows Forms Solution
with one form in it (as default Form1).
I make this Form1 as MdiContainer.
In the Load Event I create a new thread and after this I
load a new Windows Form as Mdi Child.
In the thread I just read about 1mio rows in a DataTable
using standard DataReader.
Now because I have created a new thread, I would expect
the load time of this large amount of data would not affect
the loaded form, but it does ...
After starting the application, I grab the child form and I
just move it arround the Container form and it allways
hangs for some time ...
When I reduce the amount of data to just some rows,
the form feels free.
Here I send you my code and I would be very very happy
for a solution of this problem !
Thanks and best regards
Frank Uray
private static bool StopThread = false;
private void Form1_Load(object sender, EventArgs e)
{
System.Threading.Thread local_Thread = new System.Threading.Thread(RunThread);
local_Thread.Start();
System.Windows.Forms.Form local_Form = new System.Windows.Forms.Form();
local_Form.MdiParent = this;
local_Form.Show();
}
private void RunThread()
{
System.Data.SqlClient.SqlConnection local_SqlConnection = new System.Data.SqlClient.SqlConnection();
System.Data.SqlClient.SqlCommand local_SqlCommand = new System.Data.SqlClient.SqlCommand();
System.Data.SqlClient.SqlDataReader local_SqlDataReader;
local_SqlConnection.ConnectionString = @"Data Source=MyServer\MyInstance;Initial Catalog=master;Integrated Security=true;";
local_SqlConnection.Open();
while (!StopThread)
{
local_SqlCommand.CommandText = "SELECT * FROM SomeTable";
local_SqlCommand.CommandTimeout = 0;
local_SqlCommand.Connection = local_SqlConnection;
local_SqlDataReader = local_SqlCommand.ExecuteReader();
System.Data.DataTable local_DataTable = new System.Data.DataTable();
local_DataTable.BeginLoadData();
local_DataTable.Load(local_SqlDataReader);
local_DataTable.EndLoadData();
System.Threading.Thread.Sleep(2000);
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{ StopThread = true; }
modified on Wednesday, February 3, 2010 9:14 AM
|
|
|
|
|
Please show formatted code, use PRE tags! You can still edit your message.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Hi Luc
What are PRE Tags ??
When you paste the code into Visual Studio
it is formatted automaticly.
Regards
Frank Uray
|
|
|
|
|
PRE tags are HTML instructions that provide background color, non-proportional font, syntax coloring (on CodeProject at least), and indentation, like so:
public class CPTest_OwnIPAdr : CPTest {
public override void Test(int arg) {
String strHostName;
strHostName = Dns.GetHostName();
log("Local Machine's Host Name: " + strHostName);
IPHostEntry ipEntry = Dns.GetHostByName(strHostName);
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++) {
log("IP Address "+addr[i].ToString());
}
}
}
I don't copy/paste all messages to Visual, I do read a lot of messages provided their formatting is acceptable, so please add <PRE> and </PRE> around code snippets. The "code block" widget may help you.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Hi Luc
Ok, I have changed it
Regards
Frank Uray
|
|
|
|
|
Some things are missing or unclear here:
what is the purpose of local_DataTable? where is the data ever used?
why would you load the same data all the time (at 2 sec intervals)?
and where is it related to your Form(s)?
BTW: if you set Thread.IsBackground true, that thread will stop automatically when the main form gets closed, so it no longer prevents process termination.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Hi Luc
The local_DataTable and the 2 sec interval
are just for testing purpose.
In the real application I display some information
from the database and in some interval I refresh
this informations.
Because the database is quite large these querys
take some time and I have seen the application
stuck allways when these querys are executed.
I dont understand why this happens, I was thinking
a thread should not affect the form as longest
there are no invoke or begininvoke.
I have also already tried to create a simple
exe with just this RunThread void in it and
I have loaded it with "AppDomain.ExecuteAssembly"
but this has the same effect to my main Mdi Container form ...
In my mind, this is strange ... )
Thanks for your help !
Best regards
Frank Uray
|
|
|
|
|
you'd get better help by showing actual code and explaining the phenomena about it, not by mocking it up. Chances are you have illegal cross-thread issues. Until you show real code, this[^] probably is all I can help you with.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Well, the point is, in this little sample application
I do not have any cross-thread issues and it does
not work how it should or how expected.
When I post my productive code, it just makes
it more complex to find a solution,
thats why I reduced just to the problem.
But thanks anyway.
Regards
Frank Uray
|
|
|
|
|
I haven't run your code (I'm not going to), however AFAIK the only way it could slow down your GUI is when you have a single core and the database access takes more than 2 seconds, hence cluttering up everything else.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Hi Luc
I have just found out this:
When I add the following code (in RunThread), nothing is blocked
while (true)
{ string local_Test = System.DateTime.Now.ToString(); }
Of corse, Processor usage is growing but the application
is free, nothing is blocking ...
I think now my problem has something to do with the
Datatable or with the SqlConnection ...
Regards
Frank Uray
|
|
|
|
|
Uray Frank wrote: while (true)
{ string local_Test = System.DateTime.Now.ToString(); }
if that is harmless, all it tells me is your system has more than one core, and the remainder of the thread is involved in the problem somehow.
Uray Frank wrote: I think now my problem has something to do with the
Datatable or with the SqlConnection
and that is why you should have explained, or better yet shown, what these are doing in your app; your mock up does not show enough to explain the behavior IMO.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
I have done some more investigation ... )
It has definitely something to do with the datatable.
The blocking occurs only when calling
local_SqlDataAdapter.Fill(local_DataTable);
or local_DataTable.Load(local_SqlDataReader);
When I just do
local_SqlDataReader = local_SqlCommand.ExecuteReader();
while (local_SqlDataReader.Read())
{ }
local_SqlDataReader.Close();
nothing is blocking
Well, I now know where exactly the problem is,
but what can I do now ?? )
Regards
Frank Uray
|
|
|
|
|
I don't know how big your table is; has it 2 columns, or 2000? does it contain texts, images, blobs? you may be overflowing physical RAM. Why do you want all data in memory in the first place? If it is going to be multi-user, you may end up with stale data somehow. It might be much better to perform the queries you need on the database itself. And if your user needs to select something, make it a two-stage approach, just like these forums do (you get one page at a time, and can navigate using PREV and NEXT etc).
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read code that is properly formatted, adding PRE tags is the easiest way to obtain that. [The QA section does it automatically now, I hope we soon get it on regular forums as well]
|
|
|
|
|
Hi All,
I want LINQ query to retrieve records from eventlog viewer with like operator.
Is there any LIKE operator in LINQ?
please help me.
Regards,
Sunil G.
modified on Wednesday, February 3, 2010 7:25 AM
|
|
|
|
|
|
Bear in mind that the event log entries are just a collection, you can retrieve items from it using something like the following:
var item = from EventLogEntry p in EventLog.GetEventLogs().First().Entries
where p.Message.Contains("Online")
select new { Id = p.InstanceId, Message = p.Message }; In this sample, I'm just picking from the first event log - you would probably want to refine this to find the log you are interested in explicitly. The Contains method is the closest you'll get to the Like operator.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
You can use the below code if you using LINQ to Objects
private void button1_Click(object sender, EventArgs e)
{
List<Customer> customers = new List<Customer>();
customers.Add(new Customer { CustomerID = "A12I", CustomerName = "Palash" });
customers.Add(new Customer { CustomerID = "B20G", CustomerName = "Ankesh" });
customers.Add(new Customer { CustomerID = "A100I", CustomerName = "Subhadip" });
customers.Add(new Customer { CustomerID = "C12G", CustomerName = "Namita" });
var result = (from c in customers
where c.CustomerID.StartsWith("A") && c.CustomerID.EndsWith("I")
select c).ToList();
foreach (Customer c in result)
{
MessageBox.Show(c.CustomerName);
}
}
}
public class Customer
{
public string CustomerID;
public string CustomerName;
}
for Search A%I . In case Of Search %I% you can use String Contains method to do that
In Case of LINQ to SQL You can Use the Syntax like
var result = (from c in db.Customers
where System.Data.Linq.SqlClient.SqlMethods.Like(c.CustomerID, "A%I")
select c).ToList();
|
|
|
|
|
hi,
i have multicolumn listview with two columns..nw i m setting values of second column like this
listview.items[i].subitems[1].text=somevalue;
but its not working for me.plz tell me where i m wrong?
|
|
|
|
|
with dataGriedVeiw you can do lot
|
|
|
|
|
When you say "it's not working" what do you mean?
Do you get an exception?
Does nothing display?
Does listview.items[i].subitems[1] exist?
All those who believe in psycho kinesis, raise my hand.
My 's gonna unleash hell on your ass. tastic!
|
|
|
|
|
If you have used the syntax properly,
I mean like this
listView1.Items[0].SubItems[1].Text = "SomeVal";
it should be working. If not please post your syntax and the error you are facing.
Jack Sparrow
|
|
|
|