为了账号安全,请及时绑定邮箱和手机立即绑定

WPF:如何在Windows之间共享httpClient

WPF:如何在Windows之间共享httpClient

C#
慕妹3242003 2021-04-08 13:14:15
免责声明:我真的是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();            }        }    }
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

最基本的方法是添加一个包含HttpClient静态实例的静态类。


internal static class HttpClientManager

{

    public static HttpClient Client = InititializeHttpClient();

}

然后,您可以从任何地方引用客户端,例如HttpClientManager.HttpClient。


查看完整回答
反对 回复 2021-04-24
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我不明白为什么您需要HttpClient在不同的窗口之间共享-最好的方法是在需要时调用它,除非需要保留状态。也就是说,您可以在应用程序级别创建HttpClient并在HttpClient那里定义一个。

您可以定义它,App.xaml.cs并在必要时重新使用。它不一定需要是静态的,您只需要引用特定的实例化实体即可。


查看完整回答
反对 回复 2021-04-24
  • 2 回答
  • 0 关注
  • 252 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信