csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
using System;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Threading;
|
|
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Controls.Remote;
|
|
using Avalonia.Remote.Protocol;
|
|
using Avalonia.Threading;
|
|
using ControlCatalog;
|
|
|
|
namespace RemoteTest
|
|
{
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
AppBuilder.Configure<App>().UsePlatformDetect().SetupWithoutStarting();
|
|
|
|
var l = new TcpListener(IPAddress.Loopback, 0);
|
|
l.Start();
|
|
var port = ((IPEndPoint) l.LocalEndpoint).Port;
|
|
l.Stop();
|
|
|
|
var transport = new BsonTcpTransport();
|
|
transport.Listen(IPAddress.Loopback, port, sc =>
|
|
{
|
|
Dispatcher.UIThread.Post(() =>
|
|
{
|
|
new RemoteServer(sc).Content = new MainView();
|
|
});
|
|
});
|
|
|
|
var cts = new CancellationTokenSource();
|
|
transport.Connect(IPAddress.Loopback, port).ContinueWith(t =>
|
|
{
|
|
Dispatcher.UIThread.Post(() =>
|
|
{
|
|
var window = new Window()
|
|
{
|
|
Content = new RemoteWidget(t.Result)
|
|
};
|
|
window.Closed += delegate { cts.Cancel(); };
|
|
window.Show();
|
|
});
|
|
});
|
|
Dispatcher.UIThread.MainLoop(cts.Token);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
|