我的要求:
可以使用哪种优化模式来提高垃圾收集器的性能?
我的理由是我使用Compact Framework做了很多嵌入式软件.在慢速设备上垃圾收集可能会成为一个问题,我想减少垃圾收集器启动的次数,当它发生时,我希望它能更快地完成.我还可以看到使用垃圾收集器而不是垃圾收集器可以帮助改进任何.NET或Java应用程序,尤其是重型Web应用程序.
以下是我的一些想法,但我没有做任何基准测试.
.net embedded optimization garbage-collection compact-framework
是否有一个工具可用于分析(内存).NET Compact framework 3.5应用程序(Windows Mobile)?
谢谢!

我已经尽一切可能摆脱我认为在Win CE 6.0设备上运行的CF.NET 3.5中的HttpRequest或HttpResponse类的内存泄漏.我正在使用它们与IP摄像头进行通信.
以下是我正在使用的当前代码.代码在线程上的自定义控件中运行,其优先级设置为低于正常值,backgroundworker设置为true.在我的一个表单上有两个这样的控件对象.
我说当前是因为我尝试了异步请求和下面代码的其他排列而没有减少内存消耗:
protected void CamRefreshThread()
{
while (true)
{
if (false != CamEnabled)
{
HttpWebRequest HttpReq = null;
try
{
lock (LockObject)
{
// create request
HttpReq = (HttpWebRequest)WebRequest.Create("http://" + this.Ipv4Address + "/axis-cgi/jpg/image.cgi");
HttpReq.Timeout = 5000;
HttpReq.ReadWriteTimeout = 5000;
HttpReq.Credentials = new NetworkCredential(this.CamUserName, this.CamPassword);
}
/* indicate waiting for reponse */
ResponseRxed = false;
// get response
using (HttpWebResponse HttpResp = (HttpWebResponse)HttpReq.GetResponse())
{
// get response streamImageFromStream
using (Stream ImgStream = HttpResp.GetResponseStream())
{
// get bitmap …Run Code Online (Sandbox Code Playgroud) 我很难在程序集/ exe中获取版本信息.关于这一点似乎有很多问题,但没有一个能帮助我解决这个问题.
在我的exe中包含版本信息似乎是基本和简单的,但是当我从资源管理器查看上下文菜单时它没有显示(右键单击 - >属性 - >详细信息)
如何在我的C#compact framework/WinMobile 6.0项目中添加版本信息(不使用插件)?
这是默认的assemblyinfo.cs
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TestingVerInfo")]
[assembly: AssemblyDescription("hello")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("world")]
[assembly: AssemblyProduct("TestingVerInfo")]
[assembly: AssemblyCopyright("Copyright © 2011")]
[assembly: AssemblyTrademark("gggg")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. …Run Code Online (Sandbox Code Playgroud) 我想在WinForm中显示手机摄像头拍摄控件的图像.我的想法是我的应用程序像摄像机程序一样工作.我想要显示图像,如果用户要拍照.
我怎样才能做到这一点?我能这样做吗?
如果您需要更多细节,请问我.
谢谢!
我正在开发一个紧凑的框架应用程序,需要提高性能.该应用程序当前通过将对象序列化为XML并将其存储在数据库中而脱机工作.使用分析工具,我可以看到这是一个相当大的开销,减慢了应用程序.我想如果我切换到二进制序列化,性能会增加,但因为在紧凑的框架中不支持,我看了protobuf-net.序列化似乎更快,但反序列化要慢得多,并且应用程序比串行化更多地反序列化.
二进制序列化应该更快,如果是这样,我可以做些什么来加快性能?这是我如何使用XML和二进制文件的片段:
XML序列化:
public string Serialize(T obj)
{
UTF8Encoding encoding = new UTF8Encoding();
XmlSerializer serializer = new XmlSerializer(typeof(T));
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
serializer.Serialize(stream, obj);
stream = (MemoryStream)writer.BaseStream;
return encoding.GetString(stream.ToArray(), 0, Convert.ToInt32(stream.Length));
}
public T Deserialize(string xml)
{
UTF8Encoding encoding = new UTF8Encoding();
XmlSerializer serializer = new XmlSerializer(typeof(T));
MemoryStream stream = new MemoryStream(encoding.GetBytes(xml));
return (T)serializer.Deserialize(stream);
}
Run Code Online (Sandbox Code Playgroud)
Protobuf-net二进制序列化:
public byte[] Serialize(T obj)
{
byte[] raw;
using (MemoryStream memoryStream = new MemoryStream())
{
Serializer.Serialize(memoryStream, obj);
raw …Run Code Online (Sandbox Code Playgroud) 我有一个非托管的c ++ DLL,我需要从Windows Mobile C#应用程序调用.
我有C#包装器,它在桌面上很好用.我可以从C#桌面程序调用DLL函数并传递字符串没有问题.
但是,当我编译lib和移动平台的包装器时,我在DllImport行中收到错误,指出CharSet.ANSI无法识别.我允许写的唯一选项是CharSet.Auto和CharSet.Unicode.
问题在于,无论此设置如何,在c ++函数中接收的字符串都是宽字符串,而不是它们所期望的普通char*字符串.
我们可以使用wcstombs()来翻译每个c ++函数开头的所有字符串,但我宁愿不修改lib到这样的程度......
有没有办法修复与.NET Compact Framework一起使用的C#和C之间的编组?
如何在用户单击DataGrid中的单元格时,选择整个行而不是仅选择单元格.
我正在尝试设置数据网格中列的宽度.我使用Compact Framework 2.0和C#
我试过这个,但它给了我一个"out of bonds"错误信息:
foreach (DataGridColumnStyle vColumnStyle in dataGrid1.TableStyles[0].GridColumnStyles)
{
vColumnStyle.Width = 100;
}
Run Code Online (Sandbox Code Playgroud)
以下是使用数据表填充数据网格的代码(仅在我尝试设置列宽时失败):
void FillData()
{
// 1
// Open connection
string conString = "Data Source=\\Program Files\\smartdeviceproject2\\repartocrack.sdf";
using (SqlCeConnection c = new SqlCeConnection(conString))
{
c.Open();
// 2
// Create new DataAdapter
using (SqlCeDataAdapter a = new SqlCeDataAdapter(
"SELECT codbultocomp, nombre, estado FROM envios INNER JOIN tiendas ON envios.codigodestino = tiendas.codigodestino", c))
{
// 3
// Use DataAdapter to fill DataTable
DataTable t = new DataTable();
a.Fill(t); …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×3
datagrid ×2
c++ ×1
camera ×1
cell ×1
components ×1
datatable ×1
embedded ×1
httprequest ×1
httpresponse ×1
interop ×1
memory ×1
optimization ×1
profiler ×1
profiling ×1
protobuf-net ×1
row ×1
select ×1
windows-ce ×1
zip ×1