Om jag vill "skicka ut" denna bild ifrån en webservice hur gör jag då?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim NewTh As New Threading.Thread(AddressOf DoIt)
NewTh.SetApartmentState(Threading.ApartmentState.STA)
NewTh.Start()
While NewTh.ThreadState = Threading.ThreadState.Running
End While
End Sub
Sub DoIt()
Dim url As String = Request.QueryString("url")
Dim b As Byte() = Nothing
Dim s As System.IO.Stream = Nothing
Dim x As System.Drawing.Bitmap = New GetImage(url, 1024, 768, 240, 180).GetBitmap()
Response.ContentType = "image/jpeg"
Response.Expires = 30
x.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
... och om du kan svara på Gladhs fråga, så för Guds skull, gör inte en busy wait på att tråden ska köras klart. Byt ut:
While NewTh.ThreadState = Threading.ThreadState.Running
End While
mot:
NewTh.Join
... så blockar Join tills tråden du skapat kört klart.
Dock känns det, som sagt, ganska meningslöst att använda en tråd på det här sättet eftersom den ändå blockar Page_Load tills tråden är klar. Bättre att pumpa ut bilden direkt utan att gå igenom all overhead med att skapa en ny tråd.