免责声明:我真的是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。
回首忆惘然
TA贡献1847条经验 获得超11个赞
我不明白为什么您需要HttpClient
在不同的窗口之间共享-最好的方法是在需要时调用它,除非需要保留状态。也就是说,您可以在应用程序级别创建HttpClient并在HttpClient
那里定义一个。
您可以定义它,App.xaml.cs
并在必要时重新使用。它不一定需要是静态的,您只需要引用特定的实例化实体即可。
- 2 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消