Back to Top

プログラムの覚書

C# メインループ

C#で通常メインループなど書くことは、ほぼないと思います。

メインループが必要とされるのは、ゲーム作成など一部のアプリケーションだと思われます。とりあえずメインループの基本的な書き方を記載します。

メインループ プログラム

using System;
using System.Windows.Forms;

static class MyMain
{
    //< 60FPSで処理
    private const int waitTimes = (int)(1000.0 / 60.0);

    [STAThread]
    static void Main()
    {
        Form01 MainForm = new Form01();     //< フォーム生成
        MainForm.Show();                    //< フォームの表示

        int targetTimes = System.Environment.TickCount & int.MaxValue;
        targetTimes += waitTimes;

        while (MainForm.Created)
        {
            int tickCount = System.Environment.TickCount & int.MaxValue;
            if (targetTimes <= tickCount)
            {
                // メインの処理
                MainForm.RenderFps(targetTimes);

                targetTimes = (targetTimes + waitTimes) & int.MaxValue;
            }

            System.Threading.Thread.Sleep(1);       //< スリープ処理
            Application.DoEvents();                 //< Windowメッセージ処理
        }
    }
}

※Sleepは処理を停止させる処理ですが、CPUの負荷率等を下げるのに必要です。

サブプログラム

using System;
using System.Windows.Forms;
using System.Drawing;

public partial class Form01 : Form
{
    private Label label1;

    public Form01()
    {
        InitializeComponent();
    }

    public void RenderFps(int targetTimes)
    {
        label1.Text = targetTimes.ToString();
    }

    private void InitializeComponent()
    {
        this.label1 = new System.Windows.Forms.Label();
        this.SuspendLayout();
        // 
        // label1
        // 
        this.label1.AutoSize = true;
        this.label1.Location = new System.Drawing.Point(96, 137);
        this.label1.Name = "label1";
        this.label1.Size = new System.Drawing.Size(92, 12);
        this.label1.TabIndex = 0;
        this.label1.Text = "";
        // 
        // Form01
        // 
        this.ClientSize = new System.Drawing.Size(395, 322);
        this.Controls.Add(this.label1);
        this.Name = "Form01";
        this.Text = "表示フォーム";
        this.ResumeLayout(false);
        this.PerformLayout();
    }
}

 

 

Posted in C# | Leave a reply

Visual Studio 2015でWebサービスを作成する

Visual Studio 2015でWebサービスを作成する手順を記載します。

Webサービスを作成する

1.「ファイル」-「新規作成」-「Webサイト」を選択します。

2.ASP.NET空のWebサイト を選択しサイトを作成します。

3.ソリューションエクスプローラー上で右クリックし、「追加」-「新しい項目の追加」で「Webサービス(ASMX)」を選択します。

以上でWebサービスが作成完了です。

動作テスト

ソリューションエクスプローラー上のWebService.asmxを右クリックし「ブラウザで表示」を選択して表示したら動作テストOKです。

次に、そのときのURL(http://localhost:54728/WebService.asmx)などをクライアントで使用します。

 

クライアントを作成する

1.「ファイル」-「新規作成」-「プロジェクト」を選択します。

2.Windowsフォームアプリケーション を選択し作成します。

3.ソリューションエクスプローラー上で右クリックし、「追加」-「サービス参照」を選択し、サービス参照の追加をします。

アドレスにWebサービスのURL(http://localhost:54728/WebService.asmx)を[移動]を押します。サービス(S)枠内に内容が表示されたら[OK]でを押します。

※見つからない場合、Webサービスが起動していません。WebサービスをVisualStadioで起動させたままクライアントを作成するとうまくいきます。本来は、Webサービスのアドレスを作成してください。

フォームにボタンを追加したとして次を説明します。

private void button1_Click(object sender, EventArgs e)
{
    ServiceReference1.WebServiceSoapClient web = new ServiceReference1.WebServiceSoapClient();

    string s = web.HelloWorld();

    MessageBox.Show(s);
}

画面にHello Worldが表示されたら完了です。

 

直接アドレスを設定

private void button1_Click(object sender, EventArgs e)
{
    System.ServiceModel.EndpointAddress endpointAddress = new System.ServiceModel.EndpointAddress("http://localhost:54728/WebService.asmx");

    ServiceReference1.WebServiceSoapClient web = new ServiceReference1.WebServiceSoapClient();
    web.Endpoint.Address = endpointAddress;

    string s = web.HelloWorld();
    MessageBox.Show(s);
}

 

Posted in C# | Leave a reply