WindowsフォームアプリケーションでWCFサービスをホストする方法を知っています。 しかし、フォーム上のコントロールとサービスをやり取りさせるにはどうすればよいですか。 たとえば、画像コントロールに画像を読み込むためのWebサービス呼び出しが必要です。あなたがこれを行う方法を見つけたら教えてください。あなたがこれを行うことができますWindowsフォームアプリケーションでの対話型Webサービスのホスト
0
A
答えて
0
一つの方法は...以下のように
NOTEです:私はこのアプローチについて少し心配になり、おそらくこのような何かを行う前に、あなたが達成したいかについての詳細を知りたいでしょうここであなたの質問に答えることに興味があります。
サービスから始まるように、誰かがあなたの写真をフォームの写真ボックスに表示するようにしたいとしましょうこれは:
[ServiceContract]
public interface IPictureService
{
[OperationContract]
void ShowPicture(byte[] picture);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class PictureService : IPictureService
{
private readonly Action<Image> _showPicture;
public PictureService(Action<Image> showPicture)
{
_showPicture = showPicture;
}
public void ShowPicture(byte[] picture)
{
using(var ms = new MemoryStream(picture))
{
_showPicture(Image.FromStream(ms));
}
}
}
ここで、画像を表示するために使用するフォームを作成します(Form1はフォームの名前、pictureBox1は問題の画像ボックスです)。そのためのコードは次のようになります。(、完全性について
public partial class Form1 : Form
{
private readonly ServiceHost _serviceHost;
public Form1()
{
// Construct the service host using a singleton instance of the
// PictureService service, passing in a delegate that points to
// the ShowPicture method defined below
_serviceHost = new ServiceHost(new PictureService(ShowPicture));
InitializeComponent();
}
// Display the given picture on the form
internal void ShowPicture(Image picture)
{
Invoke(((ThreadStart) (() =>
{
// This code runs on the UI thread
// by virtue of using Invoke
pictureBox1.Image = picture;
})));
}
private void Form1_Load(object sender, EventArgs e)
{
// Open the WCF service when the form loads
_serviceHost.Open();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// Close the WCF service when the form closes
_serviceHost.Close();
}
}
をApp.configファイルを追加し、この中に入れ明らかにあなたは、WCFは、かなりの程度まで離れて抽象化されますが、通りのサービスが本当に重要ではありませんホストサンザシ
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="WindowsFormsApplication1.PictureService">
<endpoint address="" binding="wsHttpBinding" contract="WindowsFormsApplication1.IPictureService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/WindowsFormsApplication1/PictureService/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
そして、それはそれである - あなたがShowPictureの操作を画像でバイト配列を送信する場合、それはフォーム上に表示されます:私は)あなたが完全に動作する例を与えたいと思いました。
たとえば、コンソールアプリケーションを作成し、上で定義したwinformsアプリケーションでホストされているサービスにサービス参照を追加すると、メインメソッドは単にこれを持つことができます(logo.pngがフォームに表示されます)。
var buffer = new byte[1024];
var bytes = new byte[0];
using(var s = File.OpenRead(@"C:\logo.png"))
{
int read;
while((read = s.Read(buffer, 0, buffer.Length)) > 0)
{
var newBytes = new byte[bytes.Length + read];
Array.Copy(bytes, newBytes, bytes.Length);
Array.Copy(buffer, 0, newBytes, bytes.Length, read);
bytes = newBytes;
}
}
var c = new PictureServiceClient();
c.ShowPicture(bytes);
関連する問題
- 1. Windowsサービスと対話型アプリケーションのGDIハンドル
- 2. Windows 8の対話型検出サービス
- 3. Windows Vistaでの対話型サービスのダイアログ検出
- 4. Windowsの対話型通知
- 5. WindowsフォームアプリケーションのWebインターフェイス
- 6. wcfサービスWindowsフォームアプリケーションの使用
- 7. 自動化 - 対話型サービスの検出
- 8. 対話型のnetworkx PythonのグラフWebページ
- 9. 対話型シェルdjangoのWebサイト
- 10. asp.netデータベースと対話するWebサービス
- 11. C#Webフォームと対話するWindowsフォーム
- 12. WindowsサービスでのホストHTTP WCFサービス
- 13. 対話型と非対話型のRセッションのトレースバック()
- 14. データの不一致型エラーC#windowsフォームアプリケーション
- 15. ローカルにホストされているWebサイトのリンクからWindowsフォームアプリケーションを開く
- 16. 対話型プロンプト
- 17. Python - 対話型電話帳
- 18. Delphi 2007の非IISホスト型WCF、C#Webサービスの使用方法
- 19. Windowsサービス/ Webサービス
- 20. サービスがWindowsでデスクトップと対話できるようにする
- 21. WindowsフォームアプリケーションからWindowsサービス設定ファイルへの変数の送信
- 22. Windows 2008上のWindowsサービス内でWCF(mex endpoint)サービスをホストする
- 23. Windowsサービス内でWCFサービスをホストする
- 24. Webサービスと対話するためのモデルとコントローラの作成
- 25. 任意のWebサービスAPIと対話するためのCocoaライブラリ
- 26. Python対話型シェル型アプリケーション
- 27. 自己ホスト型Webサービスの読み込みなし
- 28. WindowsサービスでWeb APIをホストする方法
- 29. Herokuの対話型Ipythonノートブック
- 30. 対話型のpython/djangoチュートリアル
コード実行をUIスレッドに戻す必要があります。いくつかのIDesignのサンプルがこれを示しています。 – stephenl
何を試しましたか? – JotaBe