调整例程目录
大石头 authored at 2024-11-30 10:34:54
1.88 KiB
NewLife.Remoting
using System.Text;
using NewLife;
using NewLife.Log;
using NewLife.Model;
using Stardust;

namespace Zero.Desktop;

internal static class Program
{
    /// <summary>
    ///  The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        // 支持GB2312编码
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        XTrace.UseWinForm();
        MachineInfo.RegisterAsync();

        StartClient();

        var set = ClientSetting.Current;

        // 启用语音提示
        StringHelper.EnableSpeechTip = set.SpeechTip;

        if (set.IsNew) "学无先后达者为师,欢迎使用新生命零代客户端!".SpeechTip();

        // To customize application configuration such as set high DPI settings or default font,
        // see https://aka.ms/applicationconfiguration.
        ApplicationConfiguration.Initialize();
        //Application.EnableVisualStyles();
        //Application.SetCompatibleTextRenderingDefault(false);
        //Application.SetHighDpiMode(HighDpiMode.SystemAware);
        Application.Run(new FrmMain());
    }

    static StarFactory _factory;
    static StarClient _Client;
    private static void StartClient()
    {
        var set = ClientSetting.Current;
        var server = set.Server;
        if (server.IsNullOrEmpty()) return;

        XTrace.WriteLine("初始化服务端地址:{0}", server);

        _factory = new StarFactory(server, null, null)
        {
            Log = XTrace.Log,
        };

        var client = new StarClient(server)
        {
            Code = set.Code,
            Secret = set.Secret,
            ProductCode = _factory.AppId,
            Setting = set,

            Tracer = _factory.Tracer,
            Log = XTrace.Log,
        };

        client.Open();

        Host.RegisterExit(() => client.Logout("ApplicationExit"));

        _Client = client;
    }
}