VS 2008 How To Stop Async Operation (httplistener/begingetcontext)
Dec 30, 2011
I've created an httplistener and I'm using the async method it has.Starts like this on a BUTTON click in my test app
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim prefixes() As String = {"http://*:8080/HttpListener/"}
StartRequests(prefixes)
End Sub
[code]....
This forces the callback to fire - for some reason that I don't quite understand and it gets this error...
Quote:
The I/O operation has been aborted because of either a thread exit or an application request at this line
Private Sub GetContextCallBack(ByVal result As IAsyncResult)
'Dim listener As HttpListener = CType(result.AsyncState, HttpListener)
Dim context As HttpListenerContext = m_listener.EndGetContext(result)
I have a WPF application in which i have to do a long running task (basically reading from network). Just to give you a snapshot I am doing the following thing on button click
Dim t As Task(Of String) = Task.Factory.StartNew(Of String)(Function() 'Thread.sleep is simulating long running task that will make UI unresponsive Thread.Sleep(10000)
[Code].....
I cannot use Event based async methodology because the reading API actually exist in a dll which i refer in my program, that contains a function Public function ReadFromNetwork() as String. This API is making an async call to network to read a long string and return to UI. So, in short i m doing TextBlock1.Text = ExternalDll.ReadFromNetwork().
but the problem is that even if i use Task asynchrony, the UI is still unresponsive.
I'm trying to write a 'developer friendly' wrapper for the Windows API EnumWindows - the problem is that the API uses a callback function that gets invoked on another thread, where as I want my wrapper function to simplify this and make it more useful by working like any other normal synchronous function and just returning a value.
Now if the API just called the callback once that would be fine, as I would just call the API and make the wrapper function wait until it got a signal from the callback function telling it to continue... but the API calls the callback function over 100 times (once for every window handle that exists). The biggest problem is that there is nothing that indicates that any particular call to this callback function is the last one, so my wrapper function has no idea when it is safe to continue and return the list of window handles to the caller.
The only solution I could think of is to do this:
1. The wrapper function calls the API and starts a timer that waits 2 seconds before it raises the Elapsed event. The wrapper function then pauses until it receives a signal (ManualResetEvent)
2. Each time the callback function is raised by the API on a different thread, it stops the timer (so this is before the 2 seconds have elapsed), adds the current window handle that was passed in by the API to the list of handles, then starts the timer again.
3. If the timer reaches its 2 second interval then it is assumed that we are at the end of the windows because otherwise the callback would have stopped the timer. So the timer's Elapsed event handler is what signals the original thread (that the wrapper function is executing on) to continue as we now have a complete list of windows to return.
This works fine and does exactly what I want... but I dont like it.
I dont like forcing the caller to wait an extra 2 seconds after the API has done its last callback but more importantly I dont like assuming that the API will never take longer than 2 seconds between callbacks. In reality on my PC it is never anywhere near that long between callbacks, it is something like 200 miliseconds, but I have no idea how long it would be on a slower PC and I want this to be completely reliable.
I am working on moving a project from VB6 to VB 2008 Express. [Code] When I connect to mysql db in VB6, I connect using adAsynConnect. This way, I have a "Loading..." animation display while a connection is attempted. Is there a way to do this in 2008 Express? Or something similar I could read up on?
I was trying to edit to get the reults output to a text file. I needed to do this for a few hundred IP addresses, and found kleinma's code. It works great as is, but since the number of IP addresses to ping is so large, I lose some of the info from the console session. I tried to make changes to write the information into a text file, but it doesn't output the results. I am relatively new to VB.NET, so I was wondering if you could please point out the flaw(s) in the edited code. I was trying to use the My.Computer.FileSystem.WriteAllText(File, lineContent, True) method to do this. This does export the IP address list just fine, but the results of the async ping to not get output.
'KLEINMA 'WWW.VBFORUMS.COM 'THE PING CLASS IS IN THIS NAMESPACE Imports System.Net.NetworkInformation
I have a simple application that use thread pool to read a file and input the data into a listbox. I want to be able to stop threadpool from running after clicking a stop button. How do I stop threadpool? Here is the code for my application below:
Imports System.Threading Public Class Form1 Private Delegate Sub StringDelegate(ByVal text As String)
I have been developing an async socket connection server and client program. I have been testing it, and noticed that if I connect to the server from my client and then disconnect. Upon reconnecting I am on a different port(local IP still). This is fine, however when I go to send a message, and the server trys to update all the clients, it eventually hits clients that do not exist anymore. I get the SocketException 10054, and upon connecting/disconnecting enough, it no longer works at all. My question is how do I clear out these no longer useful sockets from the server? I am doing currentsocket.Shutdown(SocketShutDown.Both); and then a currentsocket.Close(); after that. When a user disconnects.
I wrote a HttpListener console application just to test it. I have been able to get the Httplistener class to respond to request for the local host, but not for any other URL. Any ideas? All examples I have seen on the Web just parrot what's on MSDN but no one has actually said that they got it work for any other URL other than local host.
In my code, I will add a URL to listen to like:Prefixes.Add("http://junk1234:80/"It it registers just fine(no errors) but when I type in http://junk1234:80 in my browser, my application just sits there and does not respond.
This works just fine(+ is a wild card to listen to any URL):Prefixes.Add("http://+:8080/") Browser URL: Http://localhost:8080 But if I change the URL to Http://junk3333:8080, my Listener code does not see it even though it should see any URL on port 8080.
I am running on Vista Home Premium(.Net 3.5) but running my listener console app as a admin.
I have an httpListener exe that is working great. What I need to do now is make it a service (I think) so that when the server is rebooted, this program will start automatically. I found a few tutorials for making services and I got one installed, but when I started it, it said it took to long to respond. I was thinking that might be because I have a while true loop going in the onStart method.
I've got this code below that creates an HTTPLISTENER that is nicely waiting at listener.GetContext().How do I communicate with this from another VB app? I cannot seem to get WebRequest.Create to work with the URI that my HTTPLISTENER example is using. This line of code from a second app is not working:
Dim request As WebRequest = WebRequest.Create(prefixes(0))
When using ASP we can reference HttpContext.Current from anywhere in the code to get at the current http context.
I want to do something similar using HttpListener, so that I can access GET/POST data etc from anywhere in my code. Can I reference some global object for this, or do I need to explicitly pass the current HttpListenerContext object all through my code?
In vb2005 how do you simulate a web browser's file download using Net.HttpListener?This current program functions somewhat like a webserver. how when a client from a web browser asks for a file do i allow them to down load the file? currently the method will tell the browser that there is a file but it will fail after the client oks the file for download.
I have a user interface app that allows you to drag/drop in files - and it turns them into HttpListener request POST's to another EXECUTABLE that I have running - let's call it BACKEND1. BACKEND1 will be running on a SERVER when this gets ready for production use. Lots and lots of users running the UI - all dragging in files - all getting POST'ed to BACKEND1 - with the file included as a memory stream in the POST. BACKEND1 responds to the UI with a "sequential" file number assigned to the file centrally on the server.
On the SERVER is also running another EXECUTABLE - let's call it BACKEND2. It's job is to work with the DRAG'd in files. Both BACKEND1 and BACKEND2 sit on the same SERVER. At the moment I am writing the memory stream to DISK in BACKEND1 - and POSTing the FILENAME to BACKEND2 for it to work on. Would it be better to not write the file in BACKEND1 but instead include it in the POST to BACKEND2 - where it can be written to DISK? Is having LARGE HTTP REQUEST's a burden when sent between two EXECUTABLES on the same machine?
My primary goal is to have a really available BACKEND1 talking the the UI instances running out in the world. I'm concerned that doing the file i/o in BACKEND1 is "expensive" - and I don't care about the performance of BACKEND2 as much. just looking for opinions. I guess ultimately I'll have to bench mark this myself in a production environment to get a real answer.
I have a user interface app that allows you to drag/drop in files - and it turns them into HttpListener request POST's to another EXECUTABLE that I have running - let's call it BACKEND1.BACKEND1 will be running on a SERVER when this gets ready for production use.Lots and lots of users running the UI - all dragging in files - all getting POST'ed to BACKEND1 - with the file included as a memory stream in the POST. BACKEND1 responds to the UI with a "sequential" file number assigned to the file centrally on the server.
On the SERVER is also running another EXECUTABLE - let's call it BACKEND2. It's job is to work with the DRAG'd in files.Both BACKEND1 and BACKEND2 sit on the same SERVER. At the moment I am writing the memory stream to DISK in BACKEND1 - and POSTing the FILENAME to BACKEND2 for it to work on.Would it be better to not write the file in BACKEND1 but instead include it in the POST to BACKEND2 - where it can be written to DISK?
Is having LARGE HTTP REQUEST's a burden when sent between two EXECUTABLES on the same machine?My primary goal is to have a really available BACKEND1 talking the the UI instances running out in the world. I'm concerned that doing the file i/o in BACKEND1 is "expensive" - and I don't care about the performance of BACKEND2 as much.
Dim Conn As New ADODB.Connection Dim rs As New ADODB.Recordset Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:Documents and SettingsUserDesktopContribucionescontribuciones.mdb" rs.Open() rs.Open("SELECT * FROM master") rs.MoveFirst() TextBox1.Text = rs.Fields("sueldoanual").Value
I have this error The connection cannot be used to perform this operation. It is either closed or invalid in this context.
i have written a code bit for Pan operation for an image in Picture box. the code bit is as follows: Public Function PANImage(ByVal img As System.Drawing.Bitmap, ByVal PAN_X As Integer, ByVal PAN_Y As Integer) As System.Drawing.Image
[Code]...
I will be detecting the mouse co-ordinates and based on the difference between the co-ordinates from the point of left mouse button click, i will be panning the image. Now the problem is though the image gets Panned, the original image in the Picturebox (PBImage) is not getting cleared.
Alright, so I'm still working on the slot machine. I have three timers all independently going for my three "wheels" of the slot machine.
My issue, is that I'm trying to make a Stop button to stop each timer one at a time, and I'm not understanding why this code isn't working. The logic completely makes sense, and the first "wheel" stops when I click the button, however, it doesnt appear to stop the other two timers.
For iLoop As Integer = 0 To length Dim byte1 As Byte = Fs1.ReadByte() Dim byte2 As Byte = Fs2.ReadByte() Dim offset As Byte = Fs1.Position() If byte1 <> byte2 Then OffSetFS.WriteByte(offset) OutPutFS.WriteByte(byte2) End If Next Arithmetic operation resulted in an overflow.
This code is from [URL], so I assumed it would have worked, but I am probably missing something simple.
[Code]....
When I run this code, I get an InvalidOperationException (cross thread operation). How can I get my progress bar on the second thread, or does it have to be created at runtime on that thread?
I have created a DB connection, loaded my data grid and am looking to perform accumulation on the salaries that are shown. However it won't give me access to my grid view or the table for the Row.
This is the code that I have. The loop and the accumulator is at the bottom.
If rdoFullTime.Checked = True Then 'Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data3
[Code]....
I tried to dim the Row as myDA.Row and myDataSet.Row and it won't allow me to and I can't figure out why. I know this deals with database but the problem is the logic not the database.
Dim f1 As String = "File1Path" Dim f2 As String = "File2Path" Dim Fs1 As New FileStream(f1, FileMode.Open) Dim Fs2 As New FileStream(f2, FileMode.Open) Dim f1length As Integer = Fs1.Length - 1 Dim f2length As Integer = Fs2.Length - 1
[Code]...
Application.StartupPath & "PatchData.dat": PatchData.dat isn't created yet, but my program makes PatchData.dat, and PatchData.dat is ~8KB when my program gives me this error.
I have written a simple VB.net application which saves information to an RFID tag. I am now trying to compress my data. The solution I have come up with involves bitwire operation.Basically I store 2 numbers per 1 byte (0-9, 10 being a period, 12 possibly being a negative/positive flag,13,14,15 unused as of yet).The code I am using basically shifts the byte containing a number left, 4 spaces, then 'OR's it against another number.Therefore 12 is now represented as 00010010. The problem i'm having is decompressing. Obviously getting the '1' back is easy, as I just shift right 4, then grab it. I need to append or remove the last 4 bits.My solution after many headaches was to reverse the bit order, shift left 4, then reverse, then tostring it.
I have a loop the iterate in my ListBox and I got this error. Cross-thread operation not valid: Control 'ListBox1' accessed from a thread other than the thread it was created on.
Here is my codes:
Private Thread As New System.Threading.Thread(AddressOf myFunc) Sub myFunc() Dim i As Integer
[Code]...
My Listbox1 is contain hundreds of lines to loop..thats long iteration. and i need the main form keeps responding from other function even loop is under process. This time i need to use this method of multi-threading.
Im trying to work with threading on a project im doing but i have run into this cross-thread problem, ive worked with background workers before and never had this issue.ive done some searching and found some good threads this one in perticular[URL]..now i tried to use these examples and i made it work on a differant project but i cant seem to get my head around how to make it work on this project.