1

ステータスの更新のために WCF サービスの静的変数にアクセスできるかどうか、またできる場合はどうすればよいか知りたいです。

何千もの製品を更新する長いプロセスがあります。このプロセスは asp.net ページから開始され、ユーザーは、プロセスの実行中にサービスからのステータス更新 (つまり、「製品 123 の処理」) を要求します。私はサービスを持っており、ステータス更新のためにサービスをポーリングするために使用したい更新パネル内にタイマー コントロールがあります。タイマー コントロールがポストバックするときに、GetStatus メソッドを使用してサービスにクエリを実行して現在のステータスを取得すると考えていましたが、サービスの新しいインスタンスが Page_Load で作成されるため、ステータス メッセージは常に同じになると思います。では、WCF サービスから asp.net ページへの実行ステータス変数を取得するにはどうすればよいでしょうか?

protected void Timer1_Tick(object sender, EventArgs e)
{
    if (statusMessage == null)
    {
        // feed operation finished or timer is running invalid
        Timer1.Enabled = false;
    }

    try
    {
        UpdateStatusDisplay();
    }
    catch (Exception exp)
    {
        ....
    }
}

私のWCFサービスで

public string Status = "";

    public void BeginImport(ImportOptions options)
    {
        _options = options;

        string conString = ConfigurationManager.ConnectionStrings["String1"].ConnectionString;
        using (var con = new SqlConnection(conString))
        {
            con.Open();

            var products = con.Query("SELECT * FROM PRODUCTS");

            foreach (var product in products)
            {
                Status = "Processing product " + product.ProductName);
            }

        }
    }

    public string GetStatus()
    {
        return Status;
    }

編集: [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] について読んだところですが、これだけで十分ですか?

4

0 に答える 0