我必须将对象写入二进制文件.我的结构看起来像这样.
Struct Company
{
int numberofemployees
list of Struct Employee.
}
Struct Employee
{
string EmployeeName;
string Designation;
}
Run Code Online (Sandbox Code Playgroud)
进行上述操作的最佳方法是什么?问候Raju
我打算使用自动重置事件句柄进行线程间通信.
EventWaitHandle handle = new EventWaitHandle(false, EventResetMode.AutoReset);
Run Code Online (Sandbox Code Playgroud)
我的生产者线程代码如下所示
produceSomething();
handle.Set();
Run Code Online (Sandbox Code Playgroud)
在消费者线程中,我必须每隔一分钟或当生产者被称为Set方法时下载数据
try
{
while(true)
{
handle.WaitOne(60000, false);
doSomething(); // Downloads data from Internet.
// Takes lot of time to complete it.
}
}
catch(ThreadAbortException)
{
cleanup();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果消费者线程正在运行doSomething函数和生成器调用设置函数,那么自动重置事件对象的状态是什么?
我的要求是,一旦生成器调用设置方法,我必须从Internet下载新数据.如果doSomething函数正在运行,当Producer调用set方法时,我必须打断它并再次调用.
我的应用程序未涵盖所有异常情况.在运行时,有时会弹出一个窗口,显示ex:"System Null reference exception"或"文件或目录已损坏且无法读取"的错误.一旦出现错误窗口,它就不会消失,直到用户用按钮响应.
我想捕获这些异常,并且不希望向用户显示这些错误窗口.
想要在Windows->所有程序 - > StartUp到c#程序下添加/删除应用程序.
将欣赏上述代码/方向.
问候Raju
我们在当前的应用程序中有几个进程.一个过程处理USB加载程序的检测和删除.处理检测和删除的代码如下.
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m);
break;
}
base.WndProc(ref m);
}
private void OnDeviceChange(ref Message msg)
{
int wParam = (int)msg.WParam;
Win32.DEV_BROADCAST_VOLUME dbVol = new Win32.DEV_BROADCAST_VOLUME();
Win32.DEV_BROADCAST_HDR msgDevHeader = new Win32.DEV_BROADCAST_HDR();
const int DBT_DEVTYP_VOLUME = 0x00000002;
string loaderUpdates;
switch (wParam)
{
case Win32.DBT_DEVICEARRIVAL:
int devType = Marshal.ReadInt32(msg.LParam, 4);
if (devType == DBT_DEVTYP_VOLUME)
{
}
break;
case Win32.DBT_DEVICEREMOVECOMPLETE:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
当我在visual studio环境中运行以调试模式处理USB加载程序的过程时,它会正确检测USB.但我仍然会收到多条消息.接收wparam值为"7"3次的消息,然后接收wparam值为"32768(0x8000/DBT_DEVICEARRIVAL)".这是正常的吗?
当我运行所有其他进程以及检测USB的进程时,似乎始终是仅接收到wparam值为"7"的消息.用wparam作为"7"5次接收meesage.没有wparam值为"(0x8000/DBT_DEVICEARRIVAL)"的消息.可能是什么问题呢?
感谢任何输入/解决方案.
问候Raju
我的C#应用程序位于具有Intel主板和图形芯片组的嵌入式盒子上.ATI显卡放在PCI Express上.通常显卡驱动视频,但如果ATI卡出现故障,则视频会从图形芯片组中传出.
我必须检测ATI显卡的故障以进行诊断.
有关如何执行此操作的任何想法/示例代码.
在此先感谢Raju
我想从右到左显示一些阿拉伯文字.所以我将流向设置为RightToLeft.以下是我的计划:
<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" VerticalAlignment="Top" >
<TextBlock Margin="104,96,0,0" VerticalAlignment="Top" Height="Auto" Text="(??? ??????? ???????? 1 (?????? 12 ????" HorizontalAlignment="Left" FontSize="20" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
输出似乎不正确.紧密括号出现在不同的位置.输出结果为وقتالقاعدةالرئيسية1(بتوقيت12ساعة)
请提出建议/解决方案.
我编写了一个 C# 程序来接收 COM2 端口上的数据。波特率设置为115200。发送方以115200bps 的速率发送数据。我的程序偶尔会丢失几个字节。我正在调用方法从 com 端口循环ReadByte读取数据。while(true)
我有几个问题:
关于如何调试这个问题有什么想法吗?
有时我的应用程序抛出一个异常,说文件已损坏或不可恢复.基本上这个文件是一个日志文件.我的应用程序将事件和一些数据写入日志文件.
我的应用程序被放置在运行Windows XP操作系统的嵌入式盒子中.关闭应用程序的唯一方法是关闭嵌入盒子的电源.由于Windows没有正常关闭,因此文件有时会损坏(这就是我的想法).
我使用英特尔SSD作为驱动器.我已在磁盘上启用写入缓存.这会导致文件损坏吗?
如果我捕获异常,那么我可以使用c#文件函数(file.delete)删除此文件吗?
问候
我必须将下面的二进制数组写入文件:
byte[] data = new byte[] { 0x55, 0xAA, 0x02};
Run Code Online (Sandbox Code Playgroud)
我想将确切的数据放入文件(55,AA,02).请让我知道怎么做.