我有一个方法可以读取一些文件并获取哈希SHA1Managed,然后将它与列表中的其他哈希进行比较,我该如何在其他线程上执行此方法?
public bool CheckFile(string file, string filehash)
{
if (File.Exists(file))
{
using (FileStream stream = File.OpenRead(file))
{
SHA1Managed sha = new SHA1Managed();
byte[] checksum = sha.ComputeHash(stream);
string sendCheckSum = BitConverter.ToString(checksum)
.Replace("-", string.Empty);
return sendCheckSum.ToLower() == filehash;
}
}
else return false;
}
答案 0 :(得分:4)
如果您只想在后台线程中运行它,您实际上需要将任务创建向上移动一级,因为您的函数返回结果。根据调用代码的工作原理,这样的事情可能对您有用。
var backgroundTask = Task.Factory.StartNew(() =>
{
var result = CheckFile("file", "filehash");
//do something with the result
});
答案 1 :(得分:0)
尝试使用此代码:
interface OutputInterface{
public function load();
}
class ArrayOutput implements OutputInterface{
public function load() {
if (empty ($arrayOfData))
{
return null; //if the $arrayOfData is empty then it will return an empty response i.e null
}
return $arrayOfData;
}
}
class SomeClient{
private $output;
public function setOutput(OutputInterface $outputType){
$this->output = $outputType;
}
public function loadOutput(){
return $this->output->load();
}
}
$client = new SomeClient();
// Array
$client->setOutput(new ArrayOutput());
$data = $client->loadOutput();