C# - Why Is Thread Not Starting Immediately
Oct 4, 2010see below program. I start a new thread x with function abc, then I do some longer task.
Why does x only start after end sub? Shouldn't it start right-away, before sleep ?
[Code]....
see below program. I start a new thread x with function abc, then I do some longer task.
Why does x only start after end sub? Shouldn't it start right-away, before sleep ?
[Code]....
Can anyone tell me how to kill a thread immediately.
I have tried MyThread.Abort, but it seems to do nothing. Someone told me it's because 'Abort' waits for the current operation to complete, but my thread will run for over 30 minutes before that happens.
I have the following code running in a thread to enumerate the local machines in the active directory. This takes some time to complete (about 5-10 seconds) so if the user quits the application before the enum is complete the application takes 5-10 seconds to quit. I tried thread.abort but because it is waiting for For Each SubChildEntry In SubParentEntry.Children to complete it doesn't abort until this returns.
Dim childEntry As DirectoryEntry = Nothing
Dim ParentEntry As New DirectoryEntry
ParentEntry.Path = "WinNT:"
[code].....
Ok so my main form takes around 5 seconds to load i can't make it so that my load subs are on a seperate thread because too many cross thread calls being made besides i want a splash screen anyway i want a splash screen on a seperate thread that can update status while main thread is loading this way main thread carries the load subs and invokes status label changes in the splash form which is on another thread
this is my code
Dim SPForm As SplashForm
Public Sub LoaderSub(ByVal Splashed As Boolean)
If Splashed = False Then
[Code]...
what happens is the splash form shows and so does the main form but they both lag for 5 seconds (as if they are both on main thread) how do i make it so that the splash form loads from the new thread? I thought the way i did it that's what should happen...
EDIT: also why did code wraps failed to show proper vb code?
Is there a way to start same Thread form foreach loop
Sub
For Each lvItem As ListViewItem In _ListView.SelectedItems
tThread = New Thread(AddressOf Me.myFunction())
[Code]....
In my case, when i select one item from list it is working fine...but when i select more than one files it odes not work.
I have a app that is starting up a thread that runs the standard windows defrag utility. It also gives the user the option to cancel the defrag if they want to. Problem is if the thread defrag is running on is canceled is there any data loss or does it just do the last operation and then exit. For example the code goes something like this:
[Code]...
Code works exactly as it should, runs the defrag on a separate thread so my UI remains responsive. I'm just worried about the effect of the cancel on it, when you call a thread abort does the program running in the thread know it's being canceled and "cleanly" close? I don't want to abort a file move operation when it's defraging and end up with a corrupt file.
I need to check if my client is connected to the server by starting a new thread. So in short I need a way to know if the client is still connected to the server.
Here is my
[code]...
In one application, I need use 4 simultaneous threads.When the threads finished, I need to update the text of a TextBox.So, I create 4 Textbox, and I wanna the threads change the text to FINISHED.Each thread change one distinct TB.I use this "example"
Dim Terminados As Integer = 0
Private Sub frmEnviarMensagem_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Timer1.Start()
[code]....
The problem is, I have an error in the red lines.The error is: INVALIDOPERATIONEXCEPTION "Cross-Thread operation not valid: Control tbPlaca1 Accessed from a thread other than the thread it was created on."I don't use cross threading. Each TB only was accessed for the correspondent thread, and for the "main program".
This is the error message I am getting:
"Cross-thread operation not valid: Control 'Panel1' accessed from a thread other than the thread it was created on." The reason I am getting this error is because I am opening up a new form and then calling these three things:
Panel1.Show()
Label1.Show()
Label2.Show()
why I get this error message because it doesn't occur normally if I open Form2 after closing Form1, it only occurs when I open Form2 after closing Form4.
I have done a program using vb2005 to display reading from my microcontroller bs2 board but have encountered some problems. My code are as follows.
Dim Stop_Rx As Boolean
Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRead.Click
SerialPort1.Open()
[code]....
I've encounter an error which is, (Cross-thread operation not valid: Control 'txt1' accessed from a thread other than the thread it was created on.)
When my client try to connect to server I'm getting this error : Cross-thread operation not valid: Control 'l_users' accessed from a thread other than the thread it was created on.
Private Sub _socketManager_onConnectionAccept(ByVal SocketID As String) Handles _socketManager.onConnectionAccept
l_Users.Items.Add(SocketID)
End Sub
Would anyone be able to help me here please. I'm fairly new to VB.net and threading so im just trying to figure out what is happening.When I debug this I am getting the error thread operation not valid: Control 'ProgressBar1' accessed from a thread other than the thread it was created on.
I'm a little lost as to why the error is occuring or how to fix it. I've had to put the progress bar in a separate thread otherwise the GUI crashes
[Code]...
My understanding is that thread.join will suspend the execution of code on the calling thread until the spawned thread finishes or is aborted...
With that in mind, I tried this:
For i = 1 to 50
threads = New Thread(AddressOf test)
threads.IsBackground = True
threads.SetApartmentState(ApartmentState.STA)
[CODE]...
However, the rest of the code runs when the loop finishes, not waiting for all the spawned threads to finish. Since the rest of the code needs the threads to finish (otherwise the rest will error).
I have written an application that loads a form - frmCad as well as AutoCad. It does this via a class which detects when AutoCad quits.
Friend Class CadApp Private WithEvents AppObject As AcadApplication... Private Sub AppObject_BeginQuit(ByRef Cancel As Boolean) Handles AppObject.BeginQuit RaiseEvent Quit() End SubEnd Class
My main class loads frmCad as well as CadApp.
Public Class Cad Private WithEvents frmCad As CadForm Private WithEvents app As CadApp... Public Sub ShowForm() If frmCad Is Nothing Then frmCad = New CadForm frmCad.Visible = True End Sub... Private Sub app_Quit() Handles app.Quit frmCad.Dispose() frmCad = Nothing .... End Sub
When I debug the program, it stops at frmCad.Dispose()The program continues to execute, but all the code after it fails to work.Looking more carefully I get an error message which contains:-Cross-thread operation not valid: Control 'Autocad' accessed from a thread other than the thread it was created on.
My error:Cross-thread operation not valid: Control 'label2' accessed from a thread other than the thread it was created on. I want to be able to give my Public RunBot() sub access to edit Labels, buttons, etc without an error.
[Code]...
I'm getting the 'System.InvalidOperationException' error on acccessing a thread from other than where it was created. My code is:
'Required by the Windows Form Designer
Public components As System.ComponentModel.IContainer ' changed from private
[code]....
My problem is Cross-thread operation not valid: Control 'statusHO' accessed from a thread other than the thread it was created on.
System.InvalidOperationException was unhandled
Message="Cross-thread operation not valid: Control 'statusHO' accessed from a thread other than the thread it was created on."
Source="System.Windows.Forms"
StackTrace:
[Code]...
i used it and it works fine then. but as it is mentioned its not a good practice to use it. So what should i do? is it ok if i use this as i am not able to use correct practice. Mine application is not for enterprise purpose. its just my class project, and it works fine even if i put application working in background. System works ok. I dont know how to correct this error.As i dont have that much knowlege of threads.
So please guide me how to fix this in correct way otherwise i am force to go for bad programming practice
Please refer to Windows Mobile Developer Center > Smart Device Development Forums > Windows Mobile Development > Appendtext not working for all my code details
Cross-thread operation not valid: Control 'lv1' accessed from a thread other than the thread it was created on.
Dim lvi As ListViewItem
For Each lvi In lv1.Items
[code]....
Ok i have a Form with the following
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtNotepad.Text = LoadFile("notes.txt")
[code].....
I have had absolutely no prior experience in any programming whatsoever. Yesterday I downloaded the visual basic 2008 express edition from Visual Basic 2008 Express Edition.
I have a small question which I am sure is very easy for somebody else to answer and I apologise in advance if this question is in the wrong section.
I wanted to make a small exe to autorun from a cd. I want to be able to hand the cd out to friends and family. So far I have achieved what I wanted with the little app. On the cd I have an exe file in a particular folder that when clicking a command button on a windows form - I would like to run this exe. At the moment I have:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Shell("explorer.exe ..appfolderapplication.exe")
End Sub
This finds and selects the application as required, however It does not run it. Another box comes asking me "Do you want to run or save this file?" If I click run, another box comes up "The Publisher could not be verified, are you sure you want to run this application?"
what code to I need to enter or change to make this exe run immediately as if I were the same as browsing for it and double clicking on it?
My Asp.net Session Expires immediately even though i did the settings in web.config file,
<system.web>
<sessionState timeout="2880" mode="InProc" cookieless="UseCookies"></sessionState>
<customErrors mode="RemoteOnly"/>
[Code].....
i did above settings in web.config even then it expires after approx 3 minutes..
i have a datagridview with a column with comboboxes. My problem is that the changes that i am doing from comboboxes didn't occur to datagridview immediately but after the user click to another cell.
View 1 RepliesI have an issue with VS 2008 datagridview combobox control.
The combo box in question closes immediately after the CellValidation method that I wrote invalidates the input in the combo box cell. What I mean by closes immediately is that when the drop down arrow is left-clicked, once I remove my finger from the left clicking of the mouse instead of staying down so that the user can see the selection options the combo box just closes.
I'm currently using EditOnEnter as my EditMode style. (I've tried switching between the different option the same behavior exists). The datagridview is bound to a dataset which was created from my database in MS Sql Server 2005.
This problem exists on two different forms and occurs exactly the same way. I don't know what other settings to mention to help in the troubleshooting of this error, but please feel free to ask me any questions so that I may resolve this issue. By the way both forms use datagridviews tied to the same dataset, just different tables and table adapters.
I don't like the verbose way of adding DataRows one by one via Tbl.Rows.Add, so i've created this pseudo LINQ query that does nothing but adding rows implicitely:
Private Function GetData() As DataTable
Dim years = {"2010/2009", "2009/2008", "2008/2007", "2007/2006", "2006/2005", "2005/2004", "2004/2003"}
Dim tbl = New DataTable
tbl.Columns.Add(New DataColumn("Year"))
[code]....
As you can see i don't need the result of the query at all, it's only purpose is to iterate and call DataTable.Rows.Add. So the result is already available in the DataTable itself and not needed from the query.Admittedly this question is somewhat hyphotetical because there would not be a big difference in using f.e. ToList and normally a query's purpose is to return something.But anyway, what's the cheapest way(in terms of memory consumption, execution time) to execute a LINQ query when only the execution and not the result matters?Edit: Ok, thisquestion was a quick-shot and a chicken-and-egg problem. I wanted to reduce 20 lines of code to a single line but noticed that i need some kind of DataSource for the LINQ-Query. Therefor i've created the Array. But at this point i could have simply used a for-each loop as well to add the DataRows.
Conclusion: Use a LINQ-Query for what it's for: a query. Then this question is pointless since there is no cheapest way but only that which returns the correct result.
I have an application where I provide e-mail notification that a task has been completed. The e-mail works okay except that it is not sent until the user quits the program or sends a new message. Is there a way to force the e-mail to send immediately?I'm using Visual Studio 2008 / Visual Basic
Dim ToEMail As String = email_address
Dim FromEMail As String = email_address
Dim EMailAddr As New MailAddressCollection
[code]....
I have my form checked if it's dirty when a user goes to close it. If its dirty is true, the user is asked if they would like to save the data. When they click yes, the 'save event' is called. The problem I'm having is trying to get the form to completly close after saving. At the end of the save I put in me.close(), but another form closing event is triggered. Is this the correct way to dictate having the form close immediately after saving the data or is there a better way? If it is, I must have it placed in the wrong part of my code. Immediately after the "success" dialog box is displayed, I am asked if I want to save the data again.
[Code]...
I have to Repositon many TextBox in a form, but when I use Refresh() to invalidate its client area, that TextBox's Text will be disappeared until I focus to that TextBox. Are there any way to make the Text appear immediately after Refresh?
View 1 RepliesI'm having a strange problem with the following code, I'm writing a game launcher in VB.NET:
Dim gameProcess As Process = New Process()
gameProcess.StartInfo.UseShellExecute = False
gameProcess.StartInfo.FileName = TextBox2.Text
[Code]....
I see the game running for a split second in the task manager, but it immediately closes! Does anyone know why? When I run the game from Windows, it works fine.
I've also tried with Shell, same problem.
And I've tried with cmd.exe and the /C argument, same problem (note that when I type cmd.exe /C path_to_game_exe in the Windows Run Dialog, the game also starts fine), it's only when I launch it from the VB.NET app that it gives problems.
I am trying to end a program immediately when a critical exception is caught. But I am finding that code after my Try/Catch block is executing even though the code withing the Catch block is executing, and that Catch code is calling Me.Close.
I suspect it has something to do with background .net threads or something, but I have no clue how to deal with those kinds of issues. How can I stop the program as quickly as possible? If code after my Catch executes, it will (and does) throw lots of uncaught exceptions later. Currently, it is not feasible for me to try to catch all the other exceptions. I just want to report an error and end the program.In my form load routine, I create and set up a number of objects and arrays by calling various subroutines.The success of most of the subroutines depends on the sucess of three subs in particular, which are called early on. If one of those three fails, there will undoubtedly be a number of hard to trap exceptions later on in the load routine.
[Code]...
I have an OleDBDataAdapter which I am using to communicating with an Access database. I have generated a SELECT command with parameters, and used this to generate a DataSet.I have then used the OleDbCommandBuilder to generate the UPDATE and INSERT commands. I can use this successfully to fetch data and then update it.
Next I have created a I have a DataRow using DataSet.Tables.NewRow which I have populated.I have then used my DataAdapter to insert this record.This works just find. I would like to now update this DataRow.Can I refresh this DataRow so that it populates the fields such as the autonumber field and the automatically populated timestamp? I could select it again but I don't know the autonumber. Is there not some way that I can get the existing DataRow to synchronise with the new row?