2015-05-17 24 views
2

有沒有什麼辦法與ClipboardASP.NETServer-side? 只是我想推動一些在Clipboard &取得。如何在ASP.NET中使用剪貼板,服務器端

附加信息: 我有一些搜索,發現瞭解決方案正在與Thread。但我正在尋找另一種方式,如果存在。

UPDATE: 請回答下列問題:

  1. 我需要與線程工作時,我需要用剪貼板工作?
  2. 如果是這樣,我需要運行新的線程,如果我需要使用單個進程不止一次使用剪貼板(成像用戶點擊一個按鈕,並且我必須在剪貼板中將100個數據推送到(循環))

編輯:我走在深約問題#2:

選項1:

void myMethod(object i){   
    // put something on clipboard and get that   
} 

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    for(int i=0; i<100; i++){ 
     Thread t = new Thread(myMethod); 
     t.Start(i); 
    } 
} 

選項2:

void myMethod(){   
    for(int i=0; i<100; i++){ 
     // put something on clipboard and get that   
    } 
} 

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    Thread t = new Thread(myMethod); 
    t.Start();   
} 

哪一個是正確的?

+0

你爲什麼需要Web服務器端的剪貼板? –

+0

在我的情況下,我必須 –

+1

請解釋你所要做的,而不是你的可能的解決方案。剪貼板服務器端是非常不尋常的... –

回答

1

這是你如何做到這一點:

public static void PdfToJpg() 
    { 
     var Thread = new Thread(PdfToJpgThread); 
     Thread.SetApartmentState(ApartmentState.STA); 
     Thread.Start(); // You can pass your custom data through Start if you need 
    } 
    private static readonly object PdfToJpgLock = new object(); 
    private static void PdfToJpgThread(object Data) 
    { 
     lock (PdfToJpgLock) 
     { 
      for (int i = 0; i < count; i++) 
      { 

       // Call to Acrobat CopyToClipboard 
       // ... 

       Clipboard.GetImage().Save(outputPath, ImageFormat.Jpeg); 
       Clipboard.Clear(); 

       // ... 
      } 
     } 
    } 

對於每一個點擊按鈕,只需撥打PdfToJpg()和你做。

+0

你的兄弟,我想我需要開始新的線程,如果我需要使用剪貼板爲新的循環迭代,因爲我錯了? –

+0

爲什麼你需要一個信號量?爲了防止運行多個並行PDF到圖像生成器? – Dusan

+0

我剛剛編輯我的評論,如果沒有必要開始使用剪貼板的新線程,所以我在錯誤的方式,請回答這個問題第一 –