日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net remoting在wpf中的应用

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net remoting在wpf中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我做一個remotting的通訊測試,讓控制臺程序和wpf窗體通訊。具體實現的功能如下:

1、wpf獲取信息在控制臺上顯示

2、控制臺啟動wpf,以及在屏幕前端顯示

首先,我們來看項目結構:

共三個項目,它們分工明確,test是控制臺和wpf的公共類庫,它定義了雙方通訊的接口,以及接口的實現:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace test 7 { 8 public interface IOfficeService 9 { 10 void Insert(string stream); 11 } 12 [Serializable] 13 public class OfficeServiceImplement : MarshalByRefObject, IOfficeService 14 { 15 public void Insert(string stream) 16 { 17 Console.WriteLine(stream); 18 } 19 } 20 21 public interface IWPFService 22 { 23 IntPtr GetHandle(); 24 } 25 [Serializable] 26 public class WPFServiceImplement : MarshalByRefObject, IWPFService 27 { 28 public static Func<IntPtr> GetWPFHandle { set; get; } 29 public IntPtr GetHandle() 30 { 31 if (GetWPFHandle != null) 32 { 33 return GetWPFHandle(); 34 } 35 return IntPtr.Zero; 36 } 37 } 38 }

?

wfaKnowledgeWarehouse 是個控制臺項目,用來接收從wpf傳回來的消息,并打印到屏幕上:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Runtime.Remoting.Channels.Http; 7 using System.Runtime.Remoting; 8 using System.Runtime.Remoting.Channels; 9 using System.Runtime.Serialization.Formatters; 10 using System.Net.Sockets; 11 using System.Net; 12 using test; 13 using System.Diagnostics; 14 using System.Threading; 15 16 namespace wfaKnowledgeWarehouse 17 { 18 class Program 19 { 20 public const string CHANNEL_NAME = "ConsoleService"; 21 public const string OBJECT_URI = "ConsoleService.rem"; 22 23 /// <summary> 24 /// 二進制信道處理 25 /// </summary> 26 public static SoapServerFormatterSinkProvider Provider = new SoapServerFormatterSinkProvider() 27 { 28 TypeFilterLevel = TypeFilterLevel.Full 29 }; 30 31 static void Main(string[] args) 32 { 33 34 //定義一組服務 35 var channel = new HttpServerChannel(CHANNEL_NAME, 8022, Provider); 36 RemotingConfiguration.RegisterWellKnownServiceType(typeof(OfficeServiceImplement), OBJECT_URI, WellKnownObjectMode.Singleton); 37 38 var consoleInfo = Console.ReadKey(); 39 40 if (consoleInfo.Key == ConsoleKey.A) 41 { 42 //如果按下A,獲取wpf窗體句柄 43 44 var ServiceUrl = "http://" + IPAddress.Loopback.ToString() + ":{0}/WPFService.rem"; 45 var WpfService = Activator.GetObject(typeof(IWPFService), string.Format(ServiceUrl, 8023)) as IWPFService; 46 47 try 48 { 49 //啟動客戶端 50 ProcessStartInfo info = new ProcessStartInfo(); 51 info.FileName = @"D:\mywork\WordAddInTest2010\WpfTest\WpfTest\bin\Debug\WpfTest.exe"; 52 info.Arguments = ""; 53 info.WindowStyle = ProcessWindowStyle.Minimized; 54 Process pro = Process.Start(info); 55 56 Thread.Sleep(3000); 57 58 var window= WpfService.GetHandle(); 59 60 Console.WriteLine(window.ToInt32()); 61 62 if (Win32APIs.IsIconic(window) != IntPtr.Zero) 63 { 64 Win32APIs.ShowWindow(window, Win32APIs.WindowState.SW_SHOWNOACTIVATE); 65 } 66 67 Win32APIs.SetForegroundWindow(window); 68 69 } 70 catch (Exception ex) 71 { 72 Console.WriteLine(ex); 73 } 74 } 75 Console.Read(); 76 } 77 } 78 }

WpfTest 是wpf項目:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Windows; 6 using System.Windows.Controls; 7 using System.Windows.Data; 8 using System.Windows.Documents; 9 using System.Windows.Input; 10 using System.Windows.Media; 11 using System.Windows.Media.Imaging; 12 using System.Windows.Navigation; 13 using System.Windows.Shapes; 14 using System.Net; 15 using test; 16 using System.Windows.Interop; 17 using System.Runtime.Remoting.Channels; 18 using System.Runtime.Remoting.Channels.Http; 19 using System.Runtime.Remoting; 20 using System.Runtime.Serialization.Formatters; 21 using System.Threading; 22 using System.Windows.Threading; 23 24 namespace WpfTest 25 { 26 /// <summary> 27 /// MainWindow.xaml 的交互邏輯 28 /// </summary> 29 public partial class MainWindow : Window 30 { 31 public const string CHANNEL_NAME = "WPFService"; 32 public const string OBJECT_URI = "WPFService.rem"; 33 34 /// <summary> 35 /// 二進制信道處理 36 /// </summary> 37 public static SoapServerFormatterSinkProvider Provider = new SoapServerFormatterSinkProvider() 38 { 39 TypeFilterLevel = TypeFilterLevel.Full 40 }; 41 42 public MainWindow() 43 { 44 InitializeComponent(); 45 } 46 47 public static IntPtr WindowPtr { set; get; } 48 49 private void Button_Click(object sender, RoutedEventArgs e) 50 { 51 var ServiceUrl = "http://" + IPAddress.Loopback.ToString() + ":{0}/ConsoleService.rem"; 52 var WordService = Activator.GetObject(typeof(IOfficeService), string.Format(ServiceUrl, 8022)) as IOfficeService; 53 54 try 55 { 56 WordService.Insert("wbq"); 57 } 58 catch (Exception ex) 59 { 60 MessageBox.Show(ex.Message); 61 } 62 } 63 64 public IntPtr GetHandle() 65 { 66 return WindowPtr; 67 } 68 69 private void Window_Loaded(object sender, RoutedEventArgs e) 70 { 71 WindowPtr = new WindowInteropHelper(this).Handle; 72 var channel = new HttpServerChannel(CHANNEL_NAME, 8023, Provider); 73 RemotingConfiguration.RegisterWellKnownServiceType(typeof(WPFServiceImplement), OBJECT_URI, WellKnownObjectMode.Singleton); 74 WPFServiceImplement.GetWPFHandle = GetHandle; 75 } 76 } 77 }

?

wpf項目定義了提供了WPFService服務,同時它又使用控制臺提供的ConsoleService服務。

小結:想想,我們程序員為老板,為公司提供了一定的技術服務,同時得到一些報酬;老板和公司得到一些技術服務的同時,給程序員付一定的報酬。要和這個社會打交道,大抵如此吧。

?

轉載于:https://www.cnblogs.com/wangqiang3311/p/7097871.html

總結

以上是生活随笔為你收集整理的.net remoting在wpf中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色一级黄色片 | 人妻视频一区 | 野花视频免费在线观看 | 大尺度舌吻呻吟声 | 美女三级网站 | 最新国产拍偷乱偷精品 | 好看的中文字幕电影 | 黄色免费看片 | 亚洲色图日韩精品 | 国产又粗又长又硬免费视频 | 亲嘴扒胸摸屁股激烈网站 | 神马影院午夜伦理 | 中文字幕av片 | 成人mv| 女女同性高清片免费看 | 97射射| 两性视频久久 | 国产福利99| 四虎影库在线播放 | 久久久久久99精品 | 国产三级日本三级在线播放 | 中国av一级片 | 国产人妻久久精品一区二区三区 | 精品91久久久 | 国产毛片儿| 色老头一区二区三区 | 可以免费看黄的网站 | 国产精品视频区 | 久久久国产精品黄毛片 | 亚洲av永久一区二区三区蜜桃 | 精品无码一区二区三区在线 | 欧美一区二区三区免费在线观看 | 九色91popny蝌蚪新疆 | 久久这里只有精品首页 | 亚洲一级免费毛片 | 国产xxxxx在线观看 | 人人爱操 | 日本免费一区二区视频 | 91精品国产乱码久久久张津瑜 | 无码少妇精品一区二区免费动态 | 亚洲av成人精品一区二区三区 | 黄色二级毛片 | 人禽l交视频在线播放 视频 | www国产一区 | 精品少妇人妻av一区二区三区 | 牛牛影视一区二区三区 | 国产一级二级三级 | 欧美日韩在线免费视频 | av字幕在线 | 四虎色| 成人黄色免费视频 | 欧美乱码精品一区二区三区 | 国产精品日日摸天天碰 | 黄色片小视频 | 亚洲成人免费在线 | 美女隐私免费观看 | 男女猛烈无遮挡免费视频 | 久草视频在线资源 | 天天碰天天 | 超碰在线观看免费 | 亚洲高清视频在线播放 | 国产精品美女久久久久av超清 | 欧美日韩不卡一区 | 激情偷乱人成视频在线观看 | 高清av在线| 中文字幕在线亚洲 | 在线观看的网站 | 大桥未久视频在线观看 | 中文字幕在线免费观看视频 | 免费人成在线观看网站 | 国产乱码精品一区二区三 | 亚洲国产视频在线 | 99视频国产精品免费观看a | 日韩黄色片网站 | 久久尹人 | 日韩欧美的一区二区 | 欧美乱大交xxxxx潮喷 | 亚欧在线视频 | 亚洲图片88 | 欧美激情xxx | 一级爱爱免费视频 | 日韩不卡视频在线 | 国产精品情侣 | 人体一级片| 国产乱码一区二区三区 | 亚洲精品成人无码熟妇在线 | 国产色婷婷一区二区三区竹菊影视 | 亚洲av无码一区二区三区在线观看 | 久久久久久久久一区 | 日本不卡高字幕在线2019 | 国产一区免费观看 | 少妇福利视频 | 四季av中文字幕一区 | 国产一区二区三区在线播放无 | www.rihan| 国产精品jizz | 久久深夜 | 青娱乐最新视频 | 最新中文字幕第一页 |