小编ink*_*thy的帖子

c#backgroundWorker不会引发ProgressChanged或RunWorkerCompleted事件

使用C#.NET 3.5.

看起来我不是唯一一个,因为搜索似乎带来了很多类似的问题,但是阅读它们似乎仍然缺少解决方案.

我正在点击我的用户界面点击一个事件,然后应该启动一个backgroundWorker来完成一些耗费时间的工作 - 在这种情况下,我希望它从表单中收集信息并且a)写入xml文件以及b)将信息插入远程数据库.

这正是backgroundWorker设计和打算做的事情.

这是提升代码的事件.

private void btnFinish_Click(object sender, EventArgs e)
{
    clkFinish.setInstant();
    curAct.setTimeFinish(DateTime.Now);
    btnStart.Enabled = true;
    bgwDataWorker.RunWorkerAsync();
    for (int i = 0; i < 20; i++)
    {
        Console.WriteLine("Thread a: " + i);
        Thread.Sleep(100);
        if (i == (20 - 1))
        {
            Console.WriteLine("Finished");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我在那里有一些代码,我用它作为背景工作者代码的平衡,它在这里:

private void bgwDataWorker_DoWork(object sender, DoWorkEventArgs e)
{
    Console.WriteLine("Running in a different thread now");
    int count = 0;
    for (int i = 0; i < 21; i++)
    {
        Console.WriteLine("Thread b: " + …
Run Code Online (Sandbox Code Playgroud)

c# multithreading backgroundworker .net-3.5

5
推荐指数
2
解决办法
7571
查看次数

以编程方式将用户登录到asp.net成员资格和角色?

我正在使用Asp.Net 4.0 Web应用程序,该应用程序使用Asp.Net的Membership和Roles功能.

在应用程序中,将有三个角色可以访问登录页面,一个角色没有.

它的工作方式如下.

后端用户(在三个特权角色之一中)创建用户.在代码中,这是以编程方式完成的,而不是使用"注册用户"页面.创建用户时,会将它们添加到非特权角色,为了清楚起见,该角色称为访问者角色.

然后,后端用户为新用户创建一个链接,其形式为https://www.example.com?link=cc82ae24-df47-4dbf-9440-1a6923945cf2

访问链接时,应用程序将找到与查询字符串关联的用户,获取用户名和密码(适当地进行散列和加盐)并将用户登录.

这是我要撤消的地方.到目前为止,用户创建工作正常,基于查询字符串的值的数据库查询正在完成其工作并返回相关的信息位,除了实际登录之外,这一切似乎都很顺利.似乎没有一种明确的方法以编程方式记录用户,而没有经历让用户自己登录的严峻考验,我已明确告知要避免这种情况.

这是我的代码,"pers"对象是一个类,当它们落在链接的默认页面上时从数据库中填充:

protected void LogUserIn(string p)
{
    SqlConnection conn = UtilityMethods.GetConnection();
    Guid par = Guid.Parse(p);
    BioProspect pers= new BioProspect(conn);
    pers.FillDetailsFromDb(par);

    testlable.Text = pers.ToString();
    Response.Cookies.Remove(FormsAuthentication.FormsCookieName);

    try
    {
        if (Membership.ValidateUser(pers.Email, pers.Pword))
        {

            FormsAuthentication.SetAuthCookie(pers.Email, true);

            Response.Redirect(Request.Url.Scheme + "://" + Request.Url.Host + "/About.aspx");
            testlable.Text = "Logged in!";
        }
        else
        {
            throw new Exception("Something went wrong");
        }
    }
    catch (Exception ex)
    {
        StringBuilder sb = new StringBuilder();
        foreach (DictionaryEntry d in ex.Data)
        {
            sb.Append(d.Key.ToString());
            sb.Append(": "); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-membership asp.net-roles

5
推荐指数
1
解决办法
2万
查看次数