小编Hou*_*han的帖子

如何为许多类添加扩展方法?

我有大约1000个类,我需要计算它的属性数.我有以下代码:

    public static int NumberOfProperties()
    {
        Type type = typeof(C507);
        return type.GetProperties().Count();
    }
Run Code Online (Sandbox Code Playgroud)

我可以将其复制并粘贴到每个更改typeof参数的类中,但这看起来有点单调乏味.

反正有没有做一个扩展方法来做到这一点var nop = C507.NumberOfProperties();

c# reflection

25
推荐指数
5
解决办法
3437
查看次数

跨线程操作无效

即时尝试使用以下代码访问另一个表单上的富文本框:

Private Delegate Sub StringDelegateChat(text As String, window As ChatWindow)
    Private Sub AppendTextChatWindows(text As String, window As ChatWindow)
        Try              
            If window.RichTextBox1.InvokeRequired Then
                window.Invoke(New StringDelegateChat(AddressOf AppendTextChatWindows), text, window)
            Else
                window.RichTextBox1.AppendText(text)
                window.RichTextBox1.SelectionStart = window.RichTextBox1.Text.Length
                window.RichTextBox1.ScrollToCaret()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
Run Code Online (Sandbox Code Playgroud)

但我得到交叉线程操作无效错误,我认为这样做是因为它错过了window.invokeif语句的一部分.我也尝试替换If window.RichTextBox1.InvokeRequired Then to,If InvokeRequired Then但它会在一个继续循环中被捕获并引发堆栈溢出错误.

谢谢Houlahan

vb.net multithreading

5
推荐指数
1
解决办法
1632
查看次数

从SMS消息android获取日期

可能重复:
Android - 从SMS时间戳获取日期时间,以毫秒为单位

我使用以下代码来记录短信:

    public void getColumnData(Cursor cur, Context context) {
    ArrayList<String> exportBuffer = new ArrayList<String>();
    try {
        if (cur.moveToFirst()) {
            String id;
            String date;
            String phoneNumber;
            String body;

            int idColumn = cur.getColumnIndex("_id");
            int dateColumn = cur.getColumnIndex("date");
            int numberColumn = cur.getColumnIndex("address");
            int bodyColumn = cur.getColumnIndex("body");

            do {
                id = cur.getString(idColumn);
                date = cur.getString(dateColumn);
                body = cur.getString(bodyColumn);
                phoneNumber = cur.getString(numberColumn);

                String FormattedDate;

                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd-MM-yyyy");
                FormattedDate = sdf.format(date).toString();

                exportBuffer.add(id + " ," + FormattedDate + " ," …
Run Code Online (Sandbox Code Playgroud)

java datetime android

4
推荐指数
1
解决办法
6885
查看次数

变量周围的堆栈已损坏

我有一个循环函数,直到输入正确的 y,n 答案,但在选择结束时出现错误:

Time Check Failure #2 - Stack around the variable 'YESNO' was corrupted.
Run Code Online (Sandbox Code Playgroud)

我在谷歌上看了一下,并不能真正找到这个错误的任何相关答案,我的代码如下:

    void Mesh_equations(float a,float b,float c,float d,float e,float f){

    char YESNO[1];                                                                                  //define variables.
    int loop=0;                                                                                 //loop set to zero.
    while(loop==0){                                                                             //while loop initiated whilst loop is equal to zero.
    cout <<"\nDo you want to display your coefficients for the mesh equations...(y/n)?";
    cin>>YESNO;                                                                                 //prompt and cin.
    if ( YESNO[0] == 'Y' || YESNO[0] == 'y'){                                                           //if cin is 'Y' or 'y'
        system("CLS");
        cout<<"Loop One:\n(" <<a <<")" …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++-2008

4
推荐指数
1
解决办法
2万
查看次数

创建一个新文件,然后写入它

我正在尝试创建一个新的CSV文件然后写入它,代码到达BufferedWriter那时我得到一个java.io.FileNotFoundException: /mnt/sdcard/SMSMonitor/04-07-2011/Backup_20:43:00.csv (Invalid argument)异常.有谁知道为什么会这样?

public void generateCSVFile(ArrayList<String> list)
{
    File CreateDirectory  = new File(Environment.getExternalStorageDirectory()
        + "/SMSMonitor/" + subFolderName);
    CreateDirectory.mkdirs();

    try 
    {
        File file = new File(CreateDirectory +"/"+ fileName);

        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        writer.write("ID, Date, Address, Body");
        writer.newLine();
        for (String s : list)
        {
            writer.write(s);
            writer.newLine();
        }
        writer.newLine();
        writer.flush();
        writer.close();
    }
    catch (IOException e) 
    {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

java android

2
推荐指数
1
解决办法
2380
查看次数

引导多个生产者和消费者

我有以下代码:

var channel = Channel.CreateUnbounded<string>();

var consumers = Enumerable
    .Range(1, 5)   
    .Select(consumerNumber =>
        Task.Run(async () =>
        {
            var rnd = new Random();
            while (await channel.Reader.WaitToReadAsync())
            {
                if (channel.Reader.TryRead(out var item))
                {
                    Console.WriteLine($"Consuming {item} on consumer {consumerNumber}");
                }
            }
        }));

var producers = Enumerable
    .Range(1, 5)    
    .Select(producerNumber =>
        Task.Run(async () =>
        {
            var rnd = new Random();
            for (var i = 0; i < 10; i++)
            {
                var t = $"Message {i}";
                Console.WriteLine($"Producing {t} on producer {producerNumber}");

                await channel.Writer.WriteAsync(t);
                await Task.Delay(TimeSpan.FromSeconds(rnd.Next(3))); …
Run Code Online (Sandbox Code Playgroud)

c# channel producer-consumer system.threading.channels

2
推荐指数
1
解决办法
2566
查看次数

等待线程完成后再继续

我有许多线程需要运行(大约160)创建文件,然后将它们复制到不同的地方:

'Files is basically a list of strings
'which is passed to a function that creates a file from a number of database fields
'when thats done it copies it to a number of places

       For Each x In Files
            Dim Evaluator = New Thread(Sub() API.Files.Create.Standard(x))
            Evaluator.Start()
        Next
Run Code Online (Sandbox Code Playgroud)

我想要它做的是触发160个左右的线程(带有许可者x),然后等待所有线程完成,然后继续执行程序的其余部分.

vb.net multithreading

0
推荐指数
1
解决办法
4685
查看次数