WPF:如何在Windows之间共享httpClient

免责声明:我真的是WPF的新手。


在网上浏览后,我了解到HttpClient应该用作WPF中Windows之间共享的单例。


但是,我似乎找不到在MVC中找到的清晰的启动入口点(启动,du!)。


我应该在哪里实例化HttpClient,如何在多个窗口中使用它?


目前我有两个窗户。登录名和MainWindow。两者都非常基础。例子:


public partial class Login : Window

{

    public Login()

    {

        InitializeComponent();

    }


    private void BtnLoginSubmit_Click(object sender, RoutedEventArgs e)

    {


    }

}

在我的App.xaml.cs中,我实例化了一个HttpClient对象,可以从我的MainWindow访问该对象:


App.xaml.cs:


public partial class App : Application

{

    public HttpClient httpClient { get; set; }

}

MainWindow.xaml.cs:


public partial class MainWindow : Window

    {

        private static ObservableCollection<string> states;


        public static void Add(string state)

        {

            states.Add(state);

        } 


        public MainWindow()

        {

            InitializeComponent();

            ((App)Application.Current).httpClient = new HttpClient();


            states = new ObservableCollection<string>();

            states.Add("Initialized");

            states.CollectionChanged += states_CollectionChanged;

            LblStates.ItemsSource = states;

            Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);

        }


        static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)

        {

            if (e.Reason == SessionSwitchReason.SessionLock)

            {


            }


            MainWindow.Add(e.Reason.ToString());

        }


        void states_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)

        {

            if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)

            {

                LblStates.Items.Refresh();

            }

        }

    }


慕妹3242003
浏览 367回答 2
2回答

慕尼黑5688855

最基本的方法是添加一个包含HttpClient静态实例的静态类。internal static class HttpClientManager{&nbsp; &nbsp; public static HttpClient Client = InititializeHttpClient();}然后,您可以从任何地方引用客户端,例如HttpClientManager.HttpClient。

回首忆惘然

我不明白为什么您需要HttpClient在不同的窗口之间共享-最好的方法是在需要时调用它,除非需要保留状态。也就是说,您可以在应用程序级别创建HttpClient并在HttpClient那里定义一个。您可以定义它,App.xaml.cs并在必要时重新使用。它不一定需要是静态的,您只需要引用特定的实例化实体即可。
打开App,查看更多内容
随时随地看视频慕课网APP