使用C#,我正在尝试从磁盘加载JPEG文件并将其转换为字节数组.到目前为止,我有这个代码:
static void Main(string[] args)
{
System.Windows.Media.Imaging.BitmapFrame bitmapFrame;
using (var fs = new System.IO.FileStream(@"C:\Lenna.jpg", FileMode.Open))
{
bitmapFrame = BitmapFrame.Create(fs);
}
System.Windows.Media.Imaging.BitmapEncoder encoder =
new System.Windows.Media.Imaging.JpegBitmapEncoder();
encoder.Frames.Add(bitmapFrame);
byte[] myBytes;
using (var memoryStream = new System.IO.MemoryStream())
{
encoder.Save(memoryStream); // Line ARGH
// mission accomplished if myBytes is populated
myBytes = memoryStream.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,执行行ARGH给了我一条消息:
COMException未处理.句柄无效.(HRESULT异常:0x80070006(E_HANDLE))
我不认为这个文件有什么特别之处Lenna.jpg- 我是从http://computervision.wikia.com/wiki/File:Lenna.jpg下载的.你能说出上面的代码有什么问题吗?
昨天在SO上,我看到一个线程要求代码,其中一些是这样做的.我的意思是,您(经理线程)使用TPL API启动任务数量,一旦完成作业,该线程应通知您(经理)回复谁维护任务池.
所以这是我试过的代码.虽然我必须说它的工作原理如上所述.
class TaskJob
{
public delegate void NotificationDelegate(int? taskId,string message);
public event NotificationDelegate NotifyCompletion;
public void TaskToRun()
{
try
{
if (Task.CurrentId == 4)//If its a 4th thread, simulate exception
throw new Exception();
Console.WriteLine("Task started with thread id " + Task.CurrentId);
Thread.Sleep(100000);
Console.WriteLine("Task finished with thread id " + Task.CurrentId);
NotifyCompletion(Task.CurrentId, "Successfully completed");
}
catch
{
NotifyCompletion(Task.CurrentId, "Faulted error");
}
}
}
class Program
{
static List<Task> taskList = new List<Task>();
public static void Main()
{
for (int …Run Code Online (Sandbox Code Playgroud) 就在SO的其他线程上,今天我发现了这个小代码片段,我填写了更多内容以使其完整,
class GameObject
{
public virtual void Hello()
{
Console.WriteLine("Hello method in base class");
}
}
class GameObj?ct : GameObject
{
public override void Hello()
{
Console.WriteLine("Hello method in derived class");
}
}
class Program
{
public static void Main(string[] args)
{
GameObject obj = new GameObject();//Why i never can call Derived? Though c# allows it?
obj.Hello();
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
现在按照上面的代码,CSC不会发出任何警告.但代码令人惊讶.
我使用ILDasm打开了IL代码,它显示派生类,即GameObject为'GameObject'名称,基类名称为''.
所以我的问题是
即使在运行时,编译器如何区分这两个类名?
如果粘贴在带有ANSI编码的记事本上,我们会根据我的朋友Abhishek sur获得一个奇怪的字符.http://twitpic.com/68co6z
谢谢
编辑:使用不同的名称更新相同的代码,我从编译器收到错误.
class XXXYYY
{
public virtual void Hello()
{
Console.WriteLine("Hello …Run Code Online (Sandbox Code Playgroud)