程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成線程池的簡略示例

C#完成線程池的簡略示例

編輯:C#入門知識

C#完成線程池的簡略示例。本站提示廣大學習愛好者:(C#完成線程池的簡略示例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成線程池的簡略示例正文


本文以實例演示了C#線程池的簡略完成辦法。法式中界說了一個對象類,用以包裝參數,完成多個參數的傳遞。成員屬性包含兩個輸出參數和一個輸入參數。代碼簡略易懂,備有正文便於懂得。

詳細完成代碼以下:

using System;
using System.Threading;
//界說對象類,用以包裝參數,完成多個參數的傳遞
class Packet
{
 //成員屬性包含兩個輸出參數和一個輸入參數
 protected internal String inval1;
 protected internal String inval2;
 protected internal String outval;
}
class ThreadPoolExam
{
 //界說履行雷同內容的兩個辦法
 public void Task1(object Obj)
 {
 //聲明Packet類對象,用以傳遞參數
 Packet PacketObj;
 PacketObj = (Packet)Obj;
 Console.WriteLine("義務一中的第一個輸出參數:" + PacketObj.inval1);
 Console.WriteLine("義務一中的第二個輸出參數:" + PacketObj.inval2);
 //為輸入參數賦值
 PacketObj.outval = PacketObj.inval1 + " " + PacketObj.inval2;
 }
 public void Task2(object Obj)
 {
 Packet PacketObj;
 PacketObj = (Packet)Obj;
 Console.WriteLine("義務二中的第一個輸出參數:" + PacketObj.inval1);
 Console.WriteLine("義務二中的第二個輸出參數:" + PacketObj.inval2);
 
 PacketObj.outval = PacketObj.inval1 + " " + PacketObj.inval2;
 }
 static void Main()
 {
 //聲明兩個Packet對象,並為輸出參數賦值
 Packet PacketObj1 = new Packet();
 Packet PacketObj2 = new Packet();
 PacketObj1.inval1 = "Task 1 - 1";
 PacketObj1.inval2 = "Task 1 - 2";
 PacketObj2.inval1 = "Task 2 - 1";
 PacketObj2.inval2 = "Task 2 - 2";
 ThreadPoolExam tps = new ThreadPoolExam();
 //將辦法放入線程池的隊列中
 ThreadPool.QueueUserWorkItem(new WaitCallback(tps.Task1), PacketObj1);
 ThreadPool.QueueUserWorkItem(new WaitCallback(tps.Task2), PacketObj2);
 Console.ReadLine();
 }
}
if (!TextUtils.isEmpty(username)) { LogUtils.e("received from js. username = " + username); this.mUsername = username; checkData(mUsername, mPasswrod); } } } webview.addJavascriptInterface(new JavaScriptInterface(), "android"); private void getHtml() { webview.loadUrl("javascript:window.android.getHTML('<html>'+document.body.innerHTML+'</html>');"); }

那末上面這句話履行完的成果將會前往到JavaScriptInterface中getHTML辦法外面。也就是說經由過程綁定,js代碼挪用了java代碼,並將全部html作為前往值前往,履行的是saveWebViewUserData.saveUserDataWebView(webview, html);

獲得了包括class的html以後,就須要順次剖析了,平日來講,普通輸出帳號暗碼的頁面都含有 type=”password” 字樣。先斷定這個html頁面能否含有這個字樣,假如有,那末能夠就是登錄頁面。

再斷定這個頁面的id,或許是classname能否包括password啦,pwd啦,或許甚麼其他和暗碼有關的了,這個元素確定就是暗碼框了,再過濾失落頁面中其他的button,hidden,submit,checkbox等等,剩下的那一個確定就是用戶名了;過濾代碼以下:(這裡應用jsoup解析html獲得各個document,輪回遍歷剔除不須要的元素)

public void saveUserDataWebView(WebView webView, String html) {
    Document document = Jsoup.parse(html);
    Elements elements = document.select("input");
    boolean isContainsPassword = false;
    for (Element element : elements) {
      String type = element.attr("type");

      if ("password".equals(type)) {
        isContainsPassword = true;
        break;
      }
    }


    if (!isContainsPassword) {
      return;
    }

    for (Element element : elements) {
      String className = element.className();
      String type = element.attr("type");
      webView.post(new Runnable() {
        @Override
        public void run() {
          LogUtils.e("this element id is = " + element.attr("id") + " type = " + type);
          String id = element.attr("id");
          if (filterData(type, id)) {
            int handType = handleType(type);
            if (handType == NONE) {
              handType = handleId(id);
              if (handType == NONE) {
                handleClassName(className);
              }
            }

            switch (handType) {
              case PASSWORD:
                if (id==null){

                }else {
                  savePasswordById(id, webView);
                }


                break;
              case USERNAME:
                if (id==null){

                }else {
                  saveUsernameById(id, webView);
                }

                break;
              case NONE:

                break;
            }
          }

        }
      });

    }
  }

  private int handleClassName(String className) {
    if (className == null) {
      return ERROR;
    }

    if (className.contains("password")) {
      return PASSWORD;
    }

    if (className.contains("captcha")) {
      return ERROR;
    }


    return USERNAME;
  }


  private boolean filterData(String type, String id) {
    if ("captcha".equals(type)) {
      return false;
    } else if ("login_vcode".equals(type)) {
      return false;
    } else if ("button".equals(type)) {
      return false;
    } else if ("hidden".equals(type)) {
      return false;
    } else if ("submit".equals(type)) {
      return false;
    } else if ("checkbox".equals(type)) {
      return false;
    } else if ("captcha".equals(id)) {
      return false;
    } else if ("inp_ChkCode".equals(id)) {
      return false;
    } else {
      return true;
    }
  }


  private int handleId(String id) {
    if (id == null) {
      return NONE;
    }

    if (id.contains("captcha")) {
      return ERROR;
    }

    if (id.contains("password")) {
      return PASSWORD;
    }

    if (id.contains("Phone")) {
      return USERNAME;
    }

    if (id.contains("username")) {
      return USERNAME;
    }

    if (id.contains("code")) {
      return ERROR;
    }


    return USERNAME;
  }

  private int handleType(String type) {
    if (type == null) {
      return NONE;
    }

    if (type.contains("tel")) {
      return ERROR;
    }

    if (type.contains("pwd")) {
      return PASSWORD;
    }

    if (type.contains("password")) {
      return PASSWORD;
    }


    return NONE;
  }

將他們倆的class id記載上去,再次經由過程js代碼獲得到頁面的value值,挪用java代碼保留上去。代碼以下:

private void saveUsernameById(String id, WebView webView) {
   webView.loadUrl("javascript:window.android.save_username(document.getElementById('" + id + "').value)");
 }

 private void savePasswordById(String id, WebView webView) {
   webView.loadUrl("javascript:window.android.save_password(document.getElementById('" + id + "').value)");
 }

經由下面簡略的處置,曾經年夜致可以獲得到用戶輸出的帳號暗碼了,經由測試,簡略的頁面中的帳號暗碼是可以獲得到的,其他龐雜的(如暗碼在轉跳時清空了,又傳值到其他處所停止運算的)須要再依據分歧的計劃來對於了。

轉跳前先獲得全部頁面的html,用jsoup獲得頁面的一切class name,遍歷各個節點,剔除無用內容(驗證碼按鈕等),斷定暗碼框在哪,剩下的能夠就是帳號了,履行js代碼獲得value值。

以上就是本文的全體內容,願望年夜家愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved