C# Da Web Server Ve Form Geçişi Problemi
-
öncelikle projeyi anlatayım,
telefonun kamerası ile okuduğum etiketi anlık olarak c# ta yazdırmam gerek
veri alma işlemini c# tarafında web server oluşturarak çözmek istiyorum
https://codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server bu sitedeki örneği uyguladım
şimdi yapmak istediğim şey tarayıcıdan "http://localhost:8080/test/" adresine girdiğimde açık olan form'u kapatıp başka bir form'u açmak takıldığım nokta açık olan formu kapatıp yeni formu açamıyorum ilk form kapanmıyor ikinciside hatalı şekilde açılıyor
kodlar:
using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Net; using System.Text; using System.Windows.Forms; namespace proje { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { WebServer ws = new WebServer(SendResponse, "http://localhost:8080/test/"); ws.Run(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form6()); } public static string SendResponse(HttpListenerRequest request) { Form6 frm6= new Form6(); frm6.Close(); Form1 frm1 = new Form1(); frm1.Show(); return string.Format("<HTML><BODY>My web page.<br>{0}</BODY></HTML>", DateTime.Now); } } public class WebServer { private readonly HttpListener _listener = new HttpListener(); private readonly Func<HttpListenerRequest, string> _responderMethod; public WebServer(string[] prefixes, Func<HttpListenerRequest, string> method) { if (!HttpListener.IsSupported) throw new NotSupportedException( "Needs Windows XP SP2, Server 2003 or later."); // URI prefixes are required, for example // "http://localhost:8080/index/". if (prefixes == null || prefixes.Length == 0) throw new ArgumentException("prefixes"); // A responder method is required if (method == null) throw new ArgumentException("method"); foreach (string s in prefixes) _listener.Prefixes.Add(s); _responderMethod = method; _listener.Start(); } public WebServer(Func<HttpListenerRequest, string> method, params string[] prefixes) : this(prefixes, method) { } public void Run() { ThreadPool.QueueUserWorkItem((o) => { try { while (_listener.IsListening) { ThreadPool.QueueUserWorkItem((c) => { var ctx = c as HttpListenerContext; try { string rstr = _responderMethod(ctx.Request); byte[] buf = Encoding.UTF8.GetBytes(rstr); ctx.Response.ContentLength64 = buf.Length; ctx.Response.OutputStream.Write(buf, 0, buf.Length); } catch { } // suppress any exceptions finally { // always close the stream ctx.Response.OutputStream.Close(); } }, _listener.GetContext()); } } catch { } // suppress any exceptions }); } public void Stop() { _listener.Stop(); _listener.Close(); } } }
edminkardes tarafından 13/Ara/16 16:10 tarihinde düzenlenmiştir