将Aspx转换为Windows窗体应用程序

时间:2017-02-09 07:17:27

标签: c# asp.net winforms queue transform

我收到了“https://www.youtube.com/watch?v=SIs7ZsMCUWA&t=327s

中的链接

我想从aspx改为winform

问题:

在aspx中

 protected void Page_Load(object sender, EventArgs e)
    {
            if (Session["TokenQueue"] == null)
            {
                Queue<int> queueTokens = new Queue<int>();
                Session["TokenQueue"] = queueTokens;
            }

    }

    protected void btnPrinToken_Click(object sender, EventArgs e)
    {
        Queue<int> tokenQueue = (Queue<int>)Session["TokenQueue"];
        lblStatus.Text = " Terdapat " + tokenQueue.Count.ToString() + " Antrian ";

        if (Session["LastTokenNumberIssued"] == null)
        {
            Session["LastTokenNumberIssued"] = 0;
        }

        int nextTokenNumberTobeIssued = (int)Session["LastTokenNumberIssued"] + 1;
        Session["LastTokenNumberIssued"] = nextTokenNumberTobeIssued;
        tokenQueue.Enqueue(nextTokenNumberTobeIssued);

        AddTokensToListBox(tokenQueue);
    }
c#中的

无法读取会话?

Session [“TokenQueue”] = queueTokens;

如何在c#winform中使用会话?

2 个答案:

答案 0 :(得分:0)

会话通常有助于我们在Web应用程序中跨多个页面维护用户的信息。当您将任何Web应用程序转换为Windows应用程序时,您需要了解Web应用程序的某些方面。会话在大多数Web应用程序框架中都很常见。您可以通过任何语言的静态变量实现相同的行为。在C#中,您可以创建一个类来保存静态变量中的此类信息,例如

internal static class SESSIONWINFORM
    {
        public static string TokenQueue = string.Empty;
        public static DateTime LastLogin = DateTime.MinValue;
        // more variables as you needed

    }

然后在Windows应用程序的特定事件中分配这些变量值,例如在login方法中,以保存登录时间,如下所示

       protected bool login(string username, string password) {

            if (succesfullLogic)
            {
                SESSIONWINFORM.LastLogin = DateTime.Now;   
                ....
            }
        }

并在Label1中向用户显示他最后一次登录WinForm。您可以像这样设置文本

  Label1.Text = SESSIONWINFORM.LastLogin;

答案 1 :(得分:0)

由于Windows应用在用户上下文中运行,因此您不需要会话。总有一个用户。

我建议将变量变为静态变量,因为它确实在会话的生命周期内共享,就像在ASP.NET中一样。如果您在Winforms项目中创建Session类并模仿会话行为,该怎么办?这样可以更轻松地在项目之间交换代码。