小编Jos*_*osh的帖子

CreateParams.Style有哪些可能的值?

所以,我一直在尝试创建一个我正在制作的AppBar程序.现在,程序本身实际上非常简单,但我不得不从CodeProject项目中借用一些代码使其成为AppBar.

所以,我的代码如下:

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    [StructLayout(LayoutKind.Sequential)]
    struct RECT
    {
        public int left;
        public int top;
        public int right;
        public int bottom;
    }

    [StructLayout(LayoutKind.Sequential)]
    struct APPBARDATA
    {
        public int cbSize;
        public IntPtr hWnd;
        public int uCallbackMessage;
        public int uEdge;
        public RECT rc;
        public IntPtr lParam;
    }

    enum ABMsg : int
    {
        ABM_NEW = 0,
        ABM_REMOVE,
        ABM_QUERYPOS,
        ABM_SETPOS,
        ABM_GETSTATE,
        ABM_GETTASKBARPOS,
        ABM_ACTIVATE,
        ABM_GETAUTOHIDEBAR,
        ABM_SETAUTOHIDEBAR,
        ABM_WINDOWPOSCHANGED,
        ABM_SETSTATE …
Run Code Online (Sandbox Code Playgroud)

c#-4.0

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

登录会话未使用WebRequest/Response转移到新网页?

好吧,我已经在这个独奏上绞尽脑汁待了太久.即使花了很多时间在这个和许多其他网站上,我也无法破解它.

基本上,我试图使用WebRequest/Response从LogIn页面后面的网页中删除一些数据. (我已经使用WebBrowser控件执行此操作,其中一些分层事件导航到不同的网页,但在尝试重构时会导致一些问题 - 更不用说已经声明使用隐藏的表单来完成工作是'坏的实践'.)

这就是我所拥有的:

        string formParams = string.Format("j_username={0}&j_password={1}", userName, userPass);
        string cookieHeader;

        WebRequest request = WebRequest.Create(_signInPage);
        request.ContentType = "text/plain";
        request.Method = "POST";
        byte[] bytes = Encoding.ASCII.GetBytes(formParams);
        request.ContentLength = bytes.Length;
        using (Stream os = request.GetRequestStream())
        {
            os.Write(bytes, 0, bytes.Length);
        }
        WebResponse response = request.GetResponse();
        cookieHeader = response.Headers["Set-Cookie"];

        WebRequest getRequest = WebRequest.Create(sessionHistoryPage);
        getRequest.Method = "GET";
        getRequest.Headers.Add("Cookie", cookieHeader);
        WebResponse getResponse = getRequest.GetResponse();
        try
        {
            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                textBox1.AppendText(sr.ReadToEnd());
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            throw;
        } …
Run Code Online (Sandbox Code Playgroud)

.net c# forms-authentication webrequest

6
推荐指数
1
解决办法
2946
查看次数

定时器和线程有问题

我是一个不熟练的C#编码器,这就是为什么无论互联网上的信息量如何,这个问题都让我感到非常困难.

我实际上是在一个计时器上创建一个程序,它反复轮询网站以获取一些信息.在此过程中,将创建WebBrowser控件以导航到信息(身份验证所需).该程序在启动时运行这一系列事件,然后使用System.Timers.Timer设置为每10分钟(当然,调试次数较少)来执行相同系列的事件,但当我的Timer.Elapsed事件触发该过程时,我得到A:

无法实例化描述为ActiveX控件'8856f961-340a-11d0-a96b-00c04fd705a2'的ThreadStateException,因为当前线程不在单线程单元中.

这是我的程序的精简版.

private void Form1_Load(object sender, EventArgs e)
        {
            GetDataFromWebBrowser();
            Set_Auto_Refresh_Timer();
        }

private void Set_Auto_Refresh_Timer()
        {
            System.Timers.Timer TimerRefresh = new System.Timers.Timer(10000);
            TimerRefresh.Elapsed += new System.Timers.ElapsedEventHandler(TimerRefresh_Elapsed);
            TimerRefresh.AutoReset = true;
            TimerRefresh.Start();
        }    

private void TimerRefresh_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            GetDataFromWebBrowser();
        }

private void GetDataFromWebBrowser()
        {
            WebBrowser wb = new WebBrowser();  <--This is where the error is thrown.

            ...get web data...

        }
Run Code Online (Sandbox Code Playgroud)

我想我在那里有足够的代码来描绘图片.正如您所看到的,当它创建另一个WebBrowser时,它会抛出错误.

我真的很难过,我只是开始在线程上刮起表面,这可能就是我为什么这么难过的原因.

//我/我的解决方案最终将WebBrowser创建移出方法,并使其静态以仅重用WebBrowser控件.我还将System.Timers.Timer交换为System.Threading.Timer.似乎解决了这个问题.

c# multithreading timer

4
推荐指数
1
解决办法
1919
查看次数